home *** CD-ROM | disk | FTP | other *** search
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ' + W O C H E N A B R E C H N U N G +
- ' + T.GRÜTZMACHER C 1988,89,90,91 +
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ' + 1990 mit Erweiterung für Spesensätze des Auslands +
- ' + und mit editierbarem Feld für die KM-DM, die für Firmenwagenfahrer +
- ' + als Eingabefeld zur Verfügung stehen müssen (dabei KM=0) +
- ' + - Vers. 1.10 erhält eine aufrufbare Bibliothek der Auslandsspesen +
- ' + und eine Datumsfunktion im Menü und im Ortsstring +
- ' + - Vers. 1.11 erhält eine Formulardruckroutine, die mit einer +
- ' + Steuerdatei arbeitet und eine einfache Code-Sprache +
- ' + verwendet, +
- ' + 1991: +
- ' + - Vers. 1.12 screenrestore nach ACC-Aufruf +
- ' + Tastenbedienung alternativ zu Menübedienung +
- ' + Hilfsmenü nach HELP-Taste +
- ' + Wochenarbeitszeit in HH.MM +
- ' + Wochenarbeitszeit in Stat.-Grafik -Pause wenn im Büro +
- ' + - Vers. 1.13 Übergabe an Monatsmodul +
- ' + Berichtigte Mehrarbeitsangabe +
- ' + kein Doppeldatum mehr bei File-load +
- ' + variable Slidergröße bei Auslandsbox +
- ' + Summenbildung bei Wochenmodul-drucken +
- ' + Formulardateisteuerung bei Wochenmodul-drucken +
- ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- '
- '
- ' -------------------------
- ' VERSION :
- version$="Vers."+"1.13"
- ' -------------------------
- '
- DEFMOUSE 0
- @init_hintergrund
- '
- laufwerk%=GEMDOS(&H19)
- laufwerk$=CHR$(laufwerk%+65)
- pfad$=laufwerk$+":"+DIR$(0)+"\" ! defaultpfad für alle=homedir
- mittag#=2.5 ! def. der 5x0.5h mittagspause
- '
- DIM tree1|(10) ! erster baum = add_feld
- DIM tree2|(25) ! zweiter baum = definitionsfeld
- DIM ort$(7)
- DIM h_aussen#(7)
- DIM h_calc#(7)
- DIM werte#(8,8)
- DIM button#(3,7)
- DIM seq#(10,10)
- DIM zeile1&(1600)
- DIM zeile2&(1600)
- DIM auslandflag!(7)
- DIM datum$(7)
- '
- IF WORK_OUT(0)<639 ! CHECK RESOLUTION
- ~FORM_ALERT(1,"[1][NUR IN HOHER AUFLÖSUNG|][SORRY]")
- END
- ENDIF
- '
- IF RSRC_LOAD("SPESEN.RSC")=0
- ~FORM_ALERT(1,"[1][Resourcefile SPESEN.RSC| nicht gefunden][Abbruch]")
- END
- ENDIF
- '
- IF NOT EXIST("SPESEN.AUS") ! Auslandspesensätze
- ~FORM_ALERT(1,"[1][Parameterfile SPESEN.AUS| nicht gefunden!!| Bitte neu erstellen!][Abbruch]")
- END
- ELSE
- @ausland_laden
- ENDIF
- IF NOT EXIST("SPESEN.DEF")
- ALERT 1,"Parameterfile SPESEN.DEF| nicht gefunden!!| Bitte neu erstellen!!",1," OK ",dummy!
- @definition_feld
- ELSE
- @def_laden
- ENDIF
- '
- CLS
- OPENW 0
- '
- @menue_init
- @def_read
- @default
- @datum_berechnen(DATE$,datum$())
- @bildaufbau
- @werte_eintragen
- '
- ON MENU GOSUB menue_auswertung ! menü-ereignis
- ON MENU BUTTON 1,1,0 GOSUB mausauswertung ! maus- und nicht menü-ereignis
- ON MENU KEY GOSUB key_auswertung
- '
- DO
- REPEAT
- ON MENU
- ~WIND_GET(0,10,handle&,dummy&,dummy&,dummy&)
- UNTIL handle&=0
- LOOP
- '
- '
- > PROCEDURE menue_auswertung
- IF MENU(5)=crmess&
- @messagebox
- ENDIF
- '
- IF MENU(5)=newpage&
- @neues_blatt
- ENDIF
- '
- IF MENU(5)=mondayte&
- @montag
- @werte_eintragen
- ENDIF
- '
- IF MENU(5)=initdata&
- @definition_feld
- ENDIF
- '
- IF MENU(5)=hrdcpy&
- @select_hardcopy
- ENDIF
- '
- IF MENU(5)=lister&
- @liste_drucken
- ENDIF
- '
- IF MENU(5)=formular&
- @formular
- ENDIF
- '
- IF MENU(5)=statist&
- @statistik
- ENDIF
- '
- IF MENU(5)=datfile&
- @datenfile_speichern
- ENDIF
- '
- IF MENU(5)=gomonat&
- @gomonat
- ENDIF
- '
- IF MENU(5)=menufin&
- @finito
- ENDIF
- '
- ~MENU_TNORMAL(menu_adr%,MENU(4),1) ! menu aus
- RETURN
- > PROCEDURE key_auswertung
- LOCAL dummy|
- ~MENU_TNORMAL(menu_adr%,MENU(4),1) ! menu aus
- IF MENU(14) DIV 256=98
- @hilfe
- ENDIF
- IF MENU(14) DIV 256=59 ! F1
- ALERT 2,"Bildschirm neu| aufbauen?",1," OK |Abbruch",dummy|
- IF dummy|=1
- CLS
- @bildaufbau
- @default
- @datum_berechnen(DATE$,datum$())
- @werte_eintragen
- ENDIF
- ENDIF
- IF MENU(14) DIV 256=60 ! F2
- @datenfile_laden
- ENDIF
- '
- IF MENU(14) DIV 256=61 ! F3
- @montag
- @werte_eintragen
- ENDIF
- '
- IF MENU(14) DIV 256=62 ! F4
- @definition_feld
- ENDIF
- '
- IF MENU(14) DIV 256=63 ! F5
- ALERT 1,"Drucker für hardcopy| bereitmachen",1," OK |Abbruch",dummy|
- IF dummy|=1
- @screen_dump_9_needle
- ENDIF
- ENDIF
- IF MENU(14) DIV 256=64 ! F6
- ALERT 1,"Drucker für hardcopy| bereitmachen",1," OK |Abbruch",dummy|
- IF dummy|=1
- @screen_dump
- ENDIF
- ENDIF
- '
- IF MENU(14) DIV 256=65 ! F7
- @liste_drucken
- ENDIF
- '
- IF MENU(14) DIV 256=66 ! F8
- @formular
- ENDIF
- '
- IF MENU(14) DIV 256=67 ! F9
- @datenfile_speichern
- ENDIF
- '
- IF MENU(14) DIV 256=68 ! F10
- @statistik
- ENDIF
- '
- IF MENU(14) DIV 256=50 ! alt M
- @gomonat
- ENDIF
- '
- IF MENU(14) MOD 256=3 ! ^C
- @finito
- ENDIF
- '
- RETURN
- > PROCEDURE select_hardcopy
- LOCAL dummy|
- ALERT 2," EPSON 9-NADEL SPEZIAL|oder TOS Universal Hardcopy",0,"SPEZIAL|NORMAL|NIX",dummy|
- IF dummy|=1
- @screen_dump_9_needle
- ELSE IF dummy|=2
- @screen_dump
- ENDIF
- RETURN
- > PROCEDURE mausauswertung
- MOUSE x#,y#,t# ! nachdem mit mouseclick verzweigt wurde, hier x,y,t
- IF t#=1 ! holen. ist so wesentlich schneller als das
- addflag!=FALSE ! auslesen der MENU(10-12)-Einträge
- ENDIF
- IF t#=2 AND x#>480
- addflag!=TRUE ! Aditionsfeld für letzte beiden Spalten aufrufen
- ENDIF
- IF t#=2 OR t#=1 AND x#>380 AND x#<430
- z#=INT((y#-ybase#)/sprung#)
- auslandflag!(z#)=TRUE ! Aditionsfeld für letzte beiden Spalten aufrufen
- ENDIF
- '
- IF t#<>0
- IF y#>ybase# AND y#<yend#
- @editieren
- ENDIF
- IF y#>yend#+49 AND x#>400 AND x#<490
- @kw
- ENDIF
- IF y#>yend#+25 AND y#<yend#+49 AND x#>490 AND x#<639
- @persnr
- ENDIF
- IF y#>yend#+49 AND x#>490 AND x#<639
- @kostst
- ENDIF
- IF y#>yend#+49 AND x#>160 AND x#<400
- @nomen
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE bildaufbau
- sprung#=40
- ybase#=30
- yend#=ybase#+sprung#*7
- LINE 0,ybase#,640,ybase#
- LINE 20,0,20,yend#+25 !datum
- LINE 180,0,180,yend#+25 !ort/kunde, F , M , E
- LINE 230,0,230,yend#+25 !km
- LINE 280,0,280,yend#+25 !DM für km
- LINE 330,0,330,yend# !zeit von
- LINE 380,0,380,yend#+25 !zeit bis
- LINE 430,0,430,yend#+25 !dm tagesspesen
- LINE 480,0,480,yend#+25 !dm nachtspesen
- LINE 530,0,530,yend#+25 !dm spesen nach beleg
- LINE 580,0,580,yend#+25 !dm nebenkosten
- DEFTEXT 1,0,0,4
- TEXT 1,ybase#-15+sprung#*1,"Mo."
- TEXT 1,ybase#-15+sprung#*2,"Di."
- TEXT 1,ybase#-15+sprung#*3,"Mi."
- TEXT 1,ybase#-15+sprung#*4,"Do."
- TEXT 1,ybase#-15+sprung#*5,"Fr."
- TEXT 1,ybase#-15+sprung#*6,"Sa."
- TEXT 1,ybase#-15+sprung#*7,"So."
- TEXT 1,ybase#-15,"TAG"
- TEXT 22,ybase#-15," ORT / KUNDE"
- TEXT 182,ybase#-15," KM"
- TEXT 232,ybase#-18," DM"
- TEXT 232,ybase#-10," für KM"
- TEXT 284,ybase#-23,"UHRZEIT"
- TEXT 284,ybase#-16," von"
- TEXT 282,ybase#-3,"h-AUSSEN"
- TEXT 334,ybase#-23,"UHRZEIT"
- TEXT 334,ybase#-16," bis"
- TEXT 334,ybase#-3,"h-calc."
- TEXT 384,ybase#-18," DM"
- TEXT 384,ybase#-10,"TAGESSP"
- TEXT 434,ybase#-18," DM"
- TEXT 434,ybase#-10,"NACHTSP"
- TEXT 484,ybase#-21," DM"
- TEXT 484,ybase#-13," SPESEN"
- TEXT 484,ybase#-5,"n.BELEG"
- TEXT 534,ybase#-18," DM"
- TEXT 534,ybase#-10,"NEBENK."
- TEXT 584,ybase#-18," ->DM<-"
- FOR i#=1 TO 7
- k#=ybase#+sprung#*i#
- LINE 0,k#,640,k#
- LINE 280,k#-sprung#/2,330,k#-sprung#/2
- LINE 330,k#-sprung#/2,380,k#-sprung#/2 !************ Berechnete Arbeitszeit
- BOX 160,k#-5,170,k#-15
- BOX 140,k#-5,150,k#-15
- BOX 120,k#-5,130,k#-15
- TEXT 163,k#-8,"E"
- TEXT 143,k#-8,"F"
- TEXT 123,k#-8,"M"
- NEXT i#
- DEFTEXT 1,0,0,13
- LINE 280,ybase#-12,380,ybase#-12 !zwischenlinie oben bei arbeitszeit
- LINE 640,ybase#,640,yend#+25
- BOX 582,yend#+2,638,yend#+23
- LINE 0,yend#+25,640,yend#+25
- TEXT 584,ybase#-10,"SUMME:"
- TEXT 30,yend#+20,"SUMME:"
- LINE 400,yend#+49,400,380
- LINE 160,yend#+49,160,380
- LINE 490,yend#+25,490,380
- LINE 160,yend#+49,639,yend#+49
- RETURN
- > PROCEDURE screen_dump
- MENU OFF
- ALERT 1,"Switch on| printer",1," OK | NO ",reply%
- IF reply%=1
- CLOSEW 0
- ~MENU_BAR(menu_adr%,0)
- DPOKE INTIN,0 ! Rahmung aus
- VDISYS 104
- DEFFILL 1,0,0
- PBOX -1,18,640,-1
- HIDEM
- PAUSE 10
- HARDCOPY
- PAUSE 10
- DPOKE INTIN,1 ! Rahmung an
- VDISYS 104
- OPENW 0
- ~MENU_BAR(menu_adr%,1)
- SHOWM
- ENDIF
- RETURN
- > PROCEDURE screen_dump_9_needle
- MENU OFF
- ALERT 1,"Switch on| printer",1," OK | NO ",reply%
- IF reply%=1
- CLOSEW 0
- ~MENU_BAR(menu_adr%,0)
- DPOKE INTIN,0 ! Rahmung aus
- VDISYS 104
- DEFFILL 1,0,0
- PBOX -1,18,640,-1
- HIDEM
- PAUSE 10
- @hrdcopy(0,1,1) !nlq%,res%,n%
- ' NLQ%: 0 = bidirectional
- ' 1 = unidirectional
- ' RES%: 0 = grobe Rasterung, keine Punkteverdichtung
- ' 1 = Punkteverdichtung an horizontalen und vertikalen Linien
- ' 2 = Punkteverdichtung auch an diagonalen Linien
- ' N% : 0 = Einfacher Druck
- ' 1 = doppelter Druck (für ältere Farbbänder)
- ' 2 = vierfacher Druck (dauert sagenhaft lange)
- PAUSE 10
- DPOKE INTIN,1 ! Rahmung an
- VDISYS 104
- OPENW 0
- ~MENU_BAR(menu_adr%,1)
- SHOWM
- ENDIF
- RETURN
- > PROCEDURE neues_blatt
- LOCAL dummy&
- ALERT 2," Blatt löschen und neu| bearbeiten, oder Blatt|laden und erneut bearbeiten?",1," NEU | LADEN ",dummy&
- IF dummy&=1
- CLS
- @bildaufbau
- @default
- @datum_berechnen(DATE$,datum$())
- @werte_eintragen
- ELSE
- @datenfile_laden
- ENDIF
- RETURN
- > PROCEDURE default
- @def_laden
- kw$=""
- '
- FOR i#=0 TO 6
- button#(1,i#)=0
- button#(2,i#)=0
- button#(3,i#)=0
- '
- ort$(i#)=standardtext$
- ort$(5)=""
- ort$(6)=""
- '
- h_aussen#(i#)=0
- '
- werte#(0,i#)=0 !gefahrene KM
- werte#(1,i#)=0 !KM-Geld
- werte#(2,i#)=anfangszeit#
- werte#(2,6)=0 !So
- werte#(2,5)=0 !Sa
- werte#(3,i#)=arbeitsende#
- werte#(3,6)=0 !So
- werte#(3,5)=0 !Sa
- werte#(3,4)=freitagende# !Fr
- werte#(4,i#)=0 !spesen tag
- werte#(5,i#)=0 !spesen nacht
- werte#(6,i#)=0 !spesen n. beleg
- werte#(7,i#)=0 !nebenkosten
- auslandflag!(i#)=FALSE
- NEXT i#
- RETURN
- > PROCEDURE ortszeile_aufteilen(i#)
- LOCAL stelle1#,stelle2#
- IF LEN(ort$(i#))>25
- ort1$=LEFT$(ort$(i#),25)
- stelle1#=RINSTR(ort1$," ")
- IF stelle1#=0 !falls ohne blank
- stelle1#=25
- ENDIF
- ort1$=LEFT$(ort$(i#),stelle1#)
- '
- IF LEN(RIGHT$(ort$(i#),LEN(ort$(i#))-stelle1#))>25
- ort2$=MID$(ort$(i#),stelle1#+1,25)
- stelle2#=RINSTR(ort2$," ")
- IF stelle2#=0 !falls ohne blank
- stelle2#=25
- ENDIF
- ort2$=LEFT$(ort2$,stelle2#)
- '
- slen#=LEN(ort1$)+LEN(ort2$)
- IF slen#<LEN(ort$(i#))
- ort3$=RIGHT$(ort$(i#),LEN(ort$(i#))-slen#)
- ELSE
- ort3$=""
- ENDIF
- ELSE
- ort2$=RIGHT$(ort$(i#),LEN(ort$(i#))-stelle1#)
- ort3$=""
- ENDIF
- ELSE
- ort1$=ort$(i#)
- ort2$=""
- ort3$=""
- ENDIF
- RETURN
- > PROCEDURE werte_eintragen
- DEFTEXT 1,0,0,4
- ' zurücksetzen der vertikalen summen
- werte#(0,7)=0
- werte#(1,7)=0
- werte#(4,7)=0
- werte#(5,7)=0
- werte#(6,7)=0
- werte#(7,7)=0
- mehrarbeit#=0
- '
- FOR i#=0 TO 6
- @berechnungen
- @ortszeile_aufteilen(i#)
- '
- werte#(i#,8)=ROUND(werte#(1,i#)+werte#(4,i#)+werte#(5,i#)+werte#(6,i#)+werte#(7,i#),2)
- '
- ' löschen
- TEXT 25,ybase#+10+sprung#*i#,SPACE$(25)
- TEXT 25,ybase#+20+sprung#*i#,SPACE$(25)
- TEXT 25,ybase#+30+sprung#*i#,SPACE$(15)
- ' eintragen
- TEXT 25,ybase#+10+sprung#*i#,ort1$
- TEXT 25,ybase#+20+sprung#*i#,ort2$
- TEXT 25,ybase#+30+sprung#*i#,ort3$
- a$=STR$(werte#(0,i#),7) ! damit formatierung
- TEXT 185,ybase#+(sprung#/2)+2+sprung#*i#,a$ ! KM
- '
- a$=STR$(werte#(1,i#),7,2) ! damit formatierung
- TEXT 235,ybase#+(sprung#/2)+2+sprung#*i#,a$ !KM-DM
- '
- a$=STR$(werte#(2,i#),7,2)
- TEXT 285,ybase#+(sprung#*0.25)+2+sprung#*i#,a$ !uhrzeit von
- '
- a$=STR$(h_aussen#(i#),7,2)
- TEXT 285,ybase#+(sprung#*0.75)+2+sprung#*i#,a$ !zeit draußen
- '
- a$=STR$(werte#(3,i#),7,2)
- TEXT 335,ybase#+(sprung#*0.25)+2+sprung#*i#,a$ !uhrzeit bis
- '
- a$=STR$(h_calc#(i#),7,2)
- TEXT 335,ybase#+(sprung#*0.75)+2+sprung#*i#,a$ !berechnete arbeitszeit
- '
- a$=STR$(werte#(4,i#),7,2)
- TEXT 385,ybase#+(sprung#/2)+2+sprung#*i#,a$ !tagesspesen
- '
- a$=STR$(werte#(5,i#),7,2)
- TEXT 435,ybase#+(sprung#/2)+2+sprung#*i#,a$ !nachtspesen
- '
- a$=STR$(werte#(6,i#),7,2)
- TEXT 485,ybase#+(sprung#/2)+2+sprung#*i#,a$ !spesen n. beleg
- '
- a$=STR$(werte#(7,i#),7,2)
- TEXT 535,ybase#+(sprung#/2)+2+sprung#*i#,a$ !nebenkosten
- '
- a$=STR$(werte#(i#,8),7,2)
- TEXT 585,ybase#+(sprung#/2)+2+sprung#*i#,a$ !horizontale summe
- NEXT i#
- '
- ' ergebnisausgabe vertikale summierung
- FOR n#=0 TO 6
- werte#(0,7)=werte#(0,7)+werte#(0,n#) ! Km
- werte#(1,7)=werte#(1,7)+werte#(1,n#) ! KM/DM
- werte#(4,7)=werte#(4,7)+werte#(4,n#) ! tagessatz
- werte#(5,7)=werte#(5,7)+werte#(5,n#) ! nacht-betrag
- werte#(6,7)=werte#(6,7)+werte#(6,n#) ! spesen n. beleg
- werte#(7,7)=werte#(7,7)+werte#(7,n#) ! nebenkosten
- mehrarbeit#=mehrarbeit#+TRUNC(h_calc#(n#))+FRAC(h_calc#(n#))*1.66666
- NEXT n#
- '
- werte#(0,7)=ROUND(werte#(0,7),0) ! Km
- a$=STR$(werte#(0,7),7)
- TEXT 185,yend#+15,a$
- '
- werte#(1,7)=ROUND(werte#(1,7),2) ! Km/DM
- a$=STR$(werte#(1,7),7,2)
- TEXT 235,yend#+15,a$
- '
- mehrarbeit#=-wochenstunden#+mehrarbeit#-mittag#
- mehrarbeit#=ROUND(TRUNC(mehrarbeit#)+FRAC(mehrarbeit#)*0.6,2)
- IF ROUND(FRAC(mehrarbeit#),2)=0.6
- mehrarbeit#=TRUNC(mehrarbeit#)+1
- ENDIF
- a$=STR$(mehrarbeit#,5)
- TEXT 285,yend#+15," "
- TEXT 285,yend#+15,"MEHRARB. "+a$
- '
- werte#(4,7)=ROUND(werte#(4,7),2) ! tagessatz
- a$=STR$(werte#(4,7),7,2)
- TEXT 385,yend#+15,a$
- '
- werte#(5,7)=ROUND(werte#(5,7),2) ! nacht-betrag
- a$=STR$(werte#(5,7),7,2)
- TEXT 435,yend#+15,a$
- '
- werte#(6,7)=ROUND(werte#(6,7),2) ! spesen n. beleg
- a$=STR$(werte#(6,7),7,2)
- TEXT 485,yend#+15,a$
- '
- werte#(7,7)=ROUND(werte#(7,7),2) ! nebenkosten
- a$=STR$(werte#(7,7),7,2)
- TEXT 535,yend#+15,a$
- '
- summeh#=ROUND(werte#(1,7)+werte#(4,7)+werte#(5,7)+werte#(6,7)+werte#(7,7),2)
- a$=STR$(summeh#,7,2)
- TEXT 586,yend#+15,a$
- '
- DEFTEXT 1,0,0,13
- TEXT 420,375," "
- TEXT 420,375,"KW : "+kw$
- '
- ~WIND_GET(0,10,handle&,dummy&,dummy&,dummy&)
- IF handle&=0
- BMOVE screen_adr%,bit_adr%,screenlen& ! screen für ACCs saven
- ENDIF
- RETURN
- > PROCEDURE editieren
- LOCAL dummy!
- ' ZEILE FESTLEGEN
- z#=INT((y#-ybase#)/sprung#)
- '
- ' kleine kästchen F E M
- IF y#<ybase#+sprung#*(z#+1)-5 AND y#>ybase#+sprung#*(z#+1)-15
- y1#=ybase#+sprung#*(z#+1)-5
- y2#=ybase#+sprung#*(z#+1)-15
- IF x#>120 AND x#<130
- IF button#(0,z#)=1
- button#(0,z#)=0
- werte#(5,z#)=0
- ELSE
- button#(0,z#)=1
- werte#(5,z#)=nacht_pausch#
- ENDIF
- x1#=120
- x2#=130
- @markieren(x1#,y1#,x2#,y2#)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- IF x#>140 AND x#<150
- IF button#(1,z#)=1
- button#(1,z#)=0
- ELSE
- button#(1,z#)=1
- ENDIF
- x1#=140
- x2#=150
- @markieren(x1#,y1#,x2#,y2#)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- IF x#>160 AND x#<170
- IF button#(2,z#)=1
- button#(2,z#)=0
- ELSE
- button#(2,z#)=1
- ENDIF
- x1#=160
- x2#=170
- @markieren(x1#,y1#,x2#,y2#)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- ENDIF
- '
- ' Bereich der Stringeingabe
- IF y#>ybase#+sprung#*z# AND y#<ybase#+sprung#*(z#+1)
- '
- IF x#>20 AND x#<180
- x1#=20
- x2#=180
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=ort$(z#)
- laenge#=47
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- ort$(z#)=back$
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- ' anzahl KM
- IF x#>180 AND x#<230
- x1#=180
- x2#=230
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(0,z#))
- laenge#=5
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(0,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- ' KM-Geld (wenn Dienstwagen, dann ja keine KM, sondern Spritgeld)
- IF x#>230 AND x#<280
- x1#=230
- x2#=280
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(1,z#))
- laenge#=5
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(1,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- ' Uhrzeit von
- IF y#>ybase#+sprung#*z# AND y#<ybase#+sprung#*(z#+1)-sprung#/2
- IF x#>280 AND x#<330
- x1#=280
- x2#=330
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)-(sprung#/2)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(2,z#))
- laenge#=5
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(2,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- ENDIF
- '
- ' Aussendienststunden
- IF y#>ybase#+sprung#*z#+sprung#/2 AND y#<ybase#+sprung#*(z#+1)
- IF x#>280 AND x#<330
- x1#=280
- x2#=330
- y1#=ybase#+sprung#*z#+sprung#/2
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(h_aussen#(z#))
- laenge#=5
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- h_aussen#(z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- ENDIF
- '
- ' dienstende
- IF y#>ybase#+sprung#*z# AND y#<ybase#+sprung#*(z#+1)-sprung#/2
- IF x#>330 AND x#<380
- x1#=330
- x2#=380
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*z#+sprung#/2 ! obere hälfte
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(3,z#))
- laenge#=5
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(3,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- ENDIF
- '
- ' Tagesspesen
- IF x#>380 AND x#<430
- IF auslandflag!(z#)=TRUE !rechte Maustaste'
- x1#=380
- x2#=430
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- '
- @ausland_box
- @ausland_selected(tag#,nacht#) ! wahl beendet -->
- werte#(4,z#)=tag#
- IF button#(0,z#)=1
- werte#(5,z#)=nacht#
- ENDIF
- '
- @markieren(x1#,y1#,x2#,y2#)
- @werte_eintragen
- ' auslandflag!=FALSE
- GOTO ausgang
- ENDIF
- ENDIF
- '
- ' Nachtspesen
- IF x#>430 AND x#<480 AND button#(0,z#)=1
- x1#=430
- x2#=480
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(5,z#))
- laenge#=7
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(5,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- ' Spesen n. Beleg
- IF x#>480 AND x#<530
- x1#=480
- x2#=530
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(6,z#))
- laenge#=7
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(6,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- '
- ' Nebenkosten
- IF x#>530 AND x#<580
- x1#=530
- x2#=580
- y1#=ybase#+sprung#*z#
- y2#=ybase#+sprung#*(z#+1)
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=STR$(werte#(7,z#))
- laenge#=7
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- werte#(7,z#)=VAL(back$)
- @werte_eintragen
- GOTO ausgang
- ENDIF
- ENDIF
- '
- ausgang:
- RETURN
- > PROCEDURE markieren(x1#,y1#,x2#,y2#)
- GRAPHMODE 3
- DEFFILL 1,1,1
- PBOX x1#,y1#,x2#,y2#
- PAUSE 5
- GRAPHMODE 1
- RETURN
- > PROCEDURE edit(laenge#,zeichen$)
- IF addflag!=FALSE
- PRINT AT(1,22);"EDITIEREN: ";
- FORM INPUT laenge# AS zeichen$
- back$=zeichen$
- PRINT AT(1,22);SPACE$(59)
- ENDIF
- IF addflag!=TRUE
- @add_feld(zeichen$)
- addflag!=FALSE
- ENDIF
- RETURN
- > PROCEDURE berechnungen
- IF werte#(0,i#)<>0 ! wenn km eingetragen sind (priv.pkw)
- werte#(1,i#)=werte#(0,i#)*km_faktor# ! die km-pauschale
- ENDIF
- '
- ' umformung zeit in decimals
- ' arbeitszeit= bis-von
- anfang#=TRUNC(werte#(2,i#))+(FRAC(werte#(2,i#))*1.66666)
- finito#=TRUNC(werte#(3,i#))+(FRAC(werte#(3,i#))*1.66666)
- aussen#=TRUNC(h_aussen#(i#))+(FRAC(h_aussen#(i#))*1.66666)
- '
- h_calc#(i#)=finito#-anfang# ! berechnete arbeitszeit in dec.
- h_calc#(i#)=ROUND(TRUNC(h_calc#(i#))+(FRAC(h_calc#(i#))*0.6),2) !in min.
- '
- ' IF button(0,i)=1
- ' werte(5,i)=nacht_pausch ! pro übernachtung pauschalbetrag
- ' IF finito>5.5 AND finito<7
- ' werte(5,i)=nacht_pausch*0.3
- ' ENDIF
- ' IF finito>7 AND finito<10
- ' werte(5,i)=nacht_pausch*0.5
- ' ENDIF
- ' IF finito>10 AND finito<12
- ' werte(5,i)=nacht_pausch*0.8
- ' ENDIF
- ' IF finito>12 AND finito<24
- ' werte(5,i)=nacht_pausch
- ' ENDIF
- ' ELSE
- ' werte(5,i)=0
- ' ENDIF
- '
- IF button#(1,i#)=1 ! abzug für frühstück
- fabzug#=VAL(fabzug$)/100
- ELSE
- fabzug#=0
- ENDIF
- '
- IF button#(2,i#)=1 ! abzug für essen
- eabzug#=VAL(eabzug$)/100
- ELSE
- eabzug#=0
- ENDIF
- '
- IF button#(0,i#)=0 AND auslandflag!(i#)=FALSE ! also alles für eintägig
- IF aussen#>6 AND aussen#<=8
- werte#(4,i#)=eintag_spesen#-25-eabzug#*eintag_spesen#-fabzug#*eintag_spesen#
- ENDIF
- IF aussen#>8 AND aussen#<=10
- werte#(4,i#)=eintag_spesen#-18-eabzug#*eintag_spesen#-fabzug#*eintag_spesen#
- ENDIF
- IF aussen#>10 AND aussen#<=12
- werte#(4,i#)=eintag_spesen#-7-eabzug#*eintag_spesen#-fabzug#*eintag_spesen#
- ENDIF
- IF aussen#>12 AND aussen#<=24
- werte#(4,i#)=eintag_spesen#-eabzug#*eintag_spesen#-fabzug#*eintag_spesen#
- ENDIF
- IF aussen#<6 ! dann eben nix
- werte#(4,i#)=0
- ENDIF
- IF werte#(4,i#)<0 ! falls mal kleiner null
- werte#(4,i#)=0
- ENDIF
- ENDIF
- '
- IF button#(0,i#)=1 AND auslandflag!(i#)=FALSE ! also alles für mehrtägig
- IF aussen#>6 AND aussen#<=8
- werte#(4,i#)=mehrtag_spesen#-33-eabzug#*mehrtag_spesen#-fabzug#*mehrtag_spesen#
- ENDIF
- IF aussen#>8 AND aussen#<=10
- werte#(4,i#)=mehrtag_spesen#-23-eabzug#*mehrtag_spesen#-fabzug#*mehrtag_spesen#
- ENDIF
- IF aussen#>10 AND aussen#<=12
- werte#(4,i#)=mehrtag_spesen#-10-eabzug#*mehrtag_spesen#-fabzug#*mehrtag_spesen#
- ENDIF
- IF aussen#>12 AND aussen#<=24
- werte#(4,i#)=mehrtag_spesen#-eabzug#*mehrtag_spesen#-fabzug#*mehrtag_spesen#
- ENDIF
- IF aussen#<6 ! dann eben nix
- werte#(4,i#)=0
- ENDIF
- IF werte#(4,i#)<0 ! falls mal kleiner null
- werte#(4,i#)=0
- ENDIF
- ENDIF
- '
- IF button#(0,i#)=0 OR button#(0,i#)=1 AND auslandflag!(i#)=TRUE
- ' also alles für eintägig oder mehrtägig im ausland
- IF aussen#>0 AND aussen#<=24
- werte#(4,i#)=tag#-eabzug#*tag#-fabzug#*tag#
- ENDIF
- IF werte#(4,i#)<0 ! falls mal kleiner null
- werte#(4,i#)=0
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE kostst
- x1#=490
- x2#=640
- y1#=yend#+49
- y2#=381
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=kostst$
- laenge#=6
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- kostst$=back$
- TEXT 500,375," "
- TEXT 500,375,"Kostenst.: "+kostst$
- RETURN
- > PROCEDURE persnr
- x1#=490
- x2#=640
- y1#=yend#+25
- y2#=yend#+49
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=persnr$
- laenge#=6
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- persnr$=back$
- TEXT 500,352," "
- TEXT 500,352,"Pers.nr. : "+persnr$
- RETURN
- > PROCEDURE kw
- x1#=400
- x2#=490
- y1#=yend#+49
- y2#=381
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=kw$
- laenge#=2
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- kw$=back$
- TEXT 420,375," "
- TEXT 420,375,"KW : "+kw$
- RETURN
- > PROCEDURE nomen
- x1#=160
- x2#=400
- y1#=yend#+49
- y2#=381
- @markieren(x1#,y1#,x2#,y2#)
- zeichen$=nomen$
- laenge#=20
- @edit(laenge#,zeichen$)
- @markieren(x1#,y1#,x2#,y2#)
- nomen$=back$
- TEXT 170,375,SPACE$(28)
- TEXT 170,375,"Name : "+nomen$
- RETURN
- > PROCEDURE menue_init
- LET menue&=2 !RSC_TREE
- LET crmess&=10 !Obj in #2
- LET newpage&=19 !Obj in #2
- LET initdata&=21 !Obj in #2
- LET mondayte&=22 !Obj in #2
- LET hrdcpy&=24 !Obj in #2
- LET lister&=25 !Obj in #2
- LET formular&=26 !Obj in #2
- LET statist&=28 !Obj in #2
- LET datfile&=29 !Obj in #2
- LET gomonat&=31 !Obj in #2
- LET menufin&=33 !Obj in #2
- ~RSRC_GADDR(0,menue&,menu_adr%)
- ~MENU_BAR(menu_adr%,1)
- RETURN
- > PROCEDURE add_feld(zeichen$)
- LOCAL redraw$,tree1%,summ#
- FOR i|=0 TO 10 ! tree1|(0) = RSC_TREE #0
- ' ! tree1|(1) = Name in Obj #0
- tree1|(i|)=i| ! tree1|(2) = ed-feld1 in Obj #0
- ' ! tree1|(3) = ed-feld2 in Obj #0
- ' ! tree1|(4) = ed-feld3 in Obj #0
- ' ! tree1|(5) = ed-feld4 in Obj #0
- ' ! tree1|(6) = ed-feld5 in Obj #0
- ' ! tree1|(7) = ok-button #0
- ' ! tree1|(8) = cancel-button #0
- NEXT i|
- '
- ~RSRC_GADDR(0,tree1|(0),tree1%)
- ~FORM_CENTER(tree1%,x&,y&,w&,h&)
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ !redraw vorbereiten
- '
- FOR i|=2 TO 6 ! von 2 -6 liegen die editfelder
- CHAR{{OB_SPEC(tree1%,tree1|(i|))}}=""
- NEXT i|
- '
- ~OBJC_DRAW(tree1%,0,7,x&,y&,w&,h&)
- a%=FORM_DO(tree1%,0)
- SELECT BCLR(a%,15) !ohne doppelclick
- CASE 7
- FOR i|=2 TO 6 ! von 2 -6 liegen die editfelder
- n$=CHAR{{OB_SPEC(tree1%,tree1|(i|))}}
- summ#=summ#+VAL(n$)
- back$=STR$(summ#)
- NEXT i|
- OB_STATE(tree1%,7)=BCLR(OB_STATE(tree1%,7),0)
- CASE 8
- FOR i|=2 TO 6 ! von 2 -6 liegen die editfelder
- back$=zeichen$
- NEXT i|
- OB_STATE(tree1%,8)=BCLR(OB_STATE(tree1%,8),0)
- ENDSELECT
- PUT x&-4,y&-4,redraw$ ! redraw
- RETURN
- > PROCEDURE definition_feld
- LOCAL redraw$,tree2%
- FOR i|=1 TO 25 ! tree2|(1) = RSC_TREE #1
- ' ! tree2|(1) = Name in Obj #1
- tree2|(i|)=i| ! tree2|(2) = std_text in Obj #1
- ' ! tree2|(3) = km/dm in Obj #1
- ' ! tree2|(4) = 1t_reise in Obj #1
- ' ! tree2|(5) = mt_reise in Obj #1
- ' ! tree2|(6) = nacht_p in Obj #1
- ' ! tree2|(7)= ang_name in Obj #1
- ' ! tree2|(8)= kostst in Obj #1
- ' ! tree2|(9)= persnr in Obj #1
- ' ! tree2|(10) = arbeitbeginn #1
- ' ! tree2|(11) = arbeitsende #1
- ' ! tree2|(12) = h_woche in Obj #1
- ' ! tree2|(13)= save-button #1
- ' ! tree2|(14)= OK-button #1
- ' ! tree2|(15)= cancel #1
- ' ! tree2|(16)= eabzug #1
- ' ! tree2|(17)= fabzug #1
- ' ! tree2|(18)= freitagende #1
- NEXT i|
- '
- ~RSRC_GADDR(0,tree2|(1),tree2%)
- ~FORM_CENTER(tree2%,x&,y&,w&,h&)
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ !redraw vorbereiten
- '
- CHAR{{OB_SPEC(tree2%,tree2|(2))}}=standardtext$
- CHAR{{OB_SPEC(tree2%,tree2|(3))}}=km_faktor$
- CHAR{{OB_SPEC(tree2%,tree2|(4))}}=eintag_spesen$
- CHAR{{OB_SPEC(tree2%,tree2|(5))}}=mehrtag_spesen$
- CHAR{{OB_SPEC(tree2%,tree2|(6))}}=nacht_pausch$
- CHAR{{OB_SPEC(tree2%,tree2|(7))}}=nomen$
- CHAR{{OB_SPEC(tree2%,tree2|(8))}}=kostst$
- CHAR{{OB_SPEC(tree2%,tree2|(9))}}=persnr$
- CHAR{{OB_SPEC(tree2%,tree2|(10))}}=anfangszeit$
- CHAR{{OB_SPEC(tree2%,tree2|(11))}}=arbeitsende$
- CHAR{{OB_SPEC(tree2%,tree2|(12))}}=wochenstunden$
- CHAR{{OB_SPEC(tree2%,tree2|(16))}}=eabzug$
- CHAR{{OB_SPEC(tree2%,tree2|(17))}}=fabzug$
- CHAR{{OB_SPEC(tree2%,tree2|(18))}}=freitagende$
- '
- ~OBJC_DRAW(tree2%,0,15,x&,y&,w&,h&)
- a%=FORM_DO(tree2%,0)
- SELECT BCLR(a%,15) !ohne doppelclick
- CASE 13 !save
- standardtext$=CHAR{{OB_SPEC(tree2%,tree2|(2))}}
- km_faktor$=CHAR{{OB_SPEC(tree2%,tree2|(3))}}
- eintag_spesen$=CHAR{{OB_SPEC(tree2%,tree2|(4))}}
- mehrtag_spesen$=CHAR{{OB_SPEC(tree2%,tree2|(5))}}
- nacht_pausch$=CHAR{{OB_SPEC(tree2%,tree2|(6))}}
- nomen$=CHAR{{OB_SPEC(tree2%,tree2|(7))}}
- kostst$=CHAR{{OB_SPEC(tree2%,tree2|(8))}}
- persnr$=CHAR{{OB_SPEC(tree2%,tree2|(9))}}
- anfangszeit$=CHAR{{OB_SPEC(tree2%,tree2|(10))}}
- arbeitsende$=CHAR{{OB_SPEC(tree2%,tree2|(11))}}
- wochenstunden$=CHAR{{OB_SPEC(tree2%,tree2|(12))}}
- fabzug$=CHAR{{OB_SPEC(tree2%,tree2|(16))}}
- eabzug$=CHAR{{OB_SPEC(tree2%,tree2|(17))}}
- freitagende$=CHAR{{OB_SPEC(tree2%,tree2|(18))}}
- @def_speichern
- @def_uebernehmen
- OB_STATE(tree2%,13)=BCLR(OB_STATE(tree2%,13),0)
- CASE 14 ! OK
- standardtext$=CHAR{{OB_SPEC(tree2%,tree2|(2))}}
- km_faktor$=CHAR{{OB_SPEC(tree2%,tree2|(3))}}
- eintag_spesen$=CHAR{{OB_SPEC(tree2%,tree2|(4))}}
- mehrtag_spesen$=CHAR{{OB_SPEC(tree2%,tree2|(5))}}
- nacht_pausch$=CHAR{{OB_SPEC(tree2%,tree2|(6))}}
- nomen$=CHAR{{OB_SPEC(tree2%,tree2|(7))}}
- kostst$=CHAR{{OB_SPEC(tree2%,tree2|(8))}}
- persnr$=CHAR{{OB_SPEC(tree2%,tree2|(9))}}
- anfangszeit$=CHAR{{OB_SPEC(tree2%,tree2|(10))}}
- arbeitsende$=CHAR{{OB_SPEC(tree2%,tree2|(11))}}
- wochenstunden$=CHAR{{OB_SPEC(tree2%,tree2|(12))}}
- fabzug$=CHAR{{OB_SPEC(tree2%,tree2|(16))}}
- eabzug$=CHAR{{OB_SPEC(tree2%,tree2|(17))}}
- freitagende$=CHAR{{OB_SPEC(tree2%,tree2|(18))}}
- @def_uebernehmen
- OB_STATE(tree2%,14)=BCLR(OB_STATE(tree2%,14),0)
- CASE 15 ! cancel
- @def_laden
- OB_STATE(tree2%,15)=BCLR(OB_STATE(tree2%,15),0)
- ENDSELECT
- PUT x&-4,y&-4,redraw$ ! redraw
- '
- @werte_eintragen
- RETURN
- > PROCEDURE def_laden ! defaultparameter laden
- IF EXIST(pfad$+"SPESEN.DEF")
- OPEN "I",#1,pfad$+"SPESEN.DEF" ! wenn im irgendwann neue dir
- ELSE ! so ein file, dann laden, wenn
- OPEN "I",#1,"SPESEN.DEF" ! nicht, dann aus home.dir
- ENDIF
- LINE INPUT #1,standardtext$
- LINE INPUT #1,km_faktor$
- LINE INPUT #1,eintag_spesen$
- LINE INPUT #1,mehrtag_spesen$
- LINE INPUT #1,nacht_pausch$
- LINE INPUT #1,anfangszeit$
- LINE INPUT #1,arbeitsende$
- LINE INPUT #1,freitagende$
- LINE INPUT #1,wochenstunden$
- LINE INPUT #1,nomen$
- LINE INPUT #1,persnr$
- LINE INPUT #1,kostst$
- LINE INPUT #1,eabzug$
- LINE INPUT #1,fabzug$
- CLOSE #1
- '
- @def_uebernehmen
- RETURN
- > PROCEDURE def_speichern ! defaultparameter saven
- IF EXIST(pfad$+"SPESEN.DEF")
- OPEN "O",#1,pfad$+"SPESEN.DEF" ! wenn im irgendwann neuen dir
- ELSE ! so ein file, dann da saven, wenn
- OPEN "O",#1,"SPESEN.DEF" ! nicht, dann im home.dir
- ENDIF
- PRINT #1,standardtext$
- PRINT #1,km_faktor$
- PRINT #1,eintag_spesen$
- PRINT #1,mehrtag_spesen$
- PRINT #1,nacht_pausch$
- PRINT #1,anfangszeit$
- PRINT #1,arbeitsende$
- PRINT #1,freitagende$
- PRINT #1,wochenstunden$
- PRINT #1,nomen$
- PRINT #1,persnr$
- PRINT #1,kostst$
- PRINT #1,fabzug$
- PRINT #1,eabzug$
- CLOSE #1
- RETURN
- > PROCEDURE def_uebernehmen
- km_faktor#=VAL(km_faktor$) ! übertrag in numerische var's
- eintag_spesen#=VAL(eintag_spesen$)
- eintag_spesen#=VAL(eintag_spesen$)
- mehrtag_spesen#=VAL(mehrtag_spesen$)
- nacht_pausch#=VAL(nacht_pausch$)
- anfangszeit#=VAL(anfangszeit$)
- arbeitsende#=VAL(arbeitsende$)
- freitagende#=VAL(freitagende$)
- wochenstunden#=VAL(wochenstunden$)
- wochenstunden#=TRUNC(wochenstunden#)+ROUND(FRAC(wochenstunden#)*1.66666,1)
- TEXT 500,352,"Pers.nr. : "+SPACE$(4)
- TEXT 500,375,"Kostenst.: "+SPACE$(4)
- TEXT 170,375,"Name : "+SPACE$(19)
- TEXT 500,352,"Pers.nr. : "+persnr$
- TEXT 500,375,"Kostenst.: "+kostst$
- TEXT 420,375,"KW : "+kw$
- TEXT 170,375,"Name : "+nomen$
- RETURN
- > PROCEDURE hrdcopy(nlq%,res%,n%)
- ' NLQ%: 0 = bidirectional
- ' 1 = unidirectional
- ' RES%: 0 = grobe Rasterung, keine Punkteverdichtung
- ' 1 = Punkteverdichtung an horizontalen und vertikalen Linien
- ' 2 = Punkteverdichtung auch an diagonalen Linien
- ' N% : 0 = Einfacher Druck
- ' 1 = doppelter Druck (für ältere Farbbänder)
- ' 2 = vierfacher Druck (dauert sagenhaft lange)
- '
- '
- ARRAYFILL zeile1&(),0
- ARRAYFILL zeile2&(),0
- '
- LOCAL taste$,dummy%
- IF nlq%=0
- @def_prn(0)
- ELSE
- @def_prn(1)
- ENDIF
- @def_prn(2)
- '
- FOR s&=0 TO 1599+120 ! eine leerzeile da öfters schrott
- LPRINT CHR$(0); ! in der ersten zeile
- NEXT s&
- '
- FOR s&=0 TO 639 STEP 8
- was_da%=0
- FOR i&=399 DOWNTO 0
- wert&=PTST(s&,i&)*seq#(6,2)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,0) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+1,i&)*seq#(6,3)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,1) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+2,i&)*seq#(6,4)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,2) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+3,i&)*seq#(6,5)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,3) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+4,i&)*seq#(6,6)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,4) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+5,i&)*seq#(6,7)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,5) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+6,i&)*seq#(6,8)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,6) !(Wert%,Nadel%)
- ENDIF
- '
- wert&=PTST(s&+7,i&)*seq#(6,9)
- ADD zeile1&(4*i&),wert&
- ADD was_da%,wert&
- IF wert&>0
- @skip(wert&,7) !(Wert%,Nadel%)
- ENDIF
- '
- ' Abbruchbedingung:
- taste$=INKEY$
- IF taste$=CHR$(27)
- ALERT 2," STOP or GO ON",2,"STOP|GO ON",dummy%
- ENDIF
- IF dummy%=1 ! i&=0 : zeilenschleife ENDE
- i&=0
- ENDIF
- NEXT i&
- '
- IF res%=0 OR was_da%=0
- @def_prn(3)
- LPRINT
- ELSE
- @def_prn(4)
- LPRINT
- ENDIF
- IF was_da%>0
- FOR z%=0 TO 2^n%-1
- @def_prn(2)
- '
- FOR i&=1 TO 120 ! RAND
- LPRINT CHR$(0);
- NEXT i&
- FOR i&=1599 TO 0 STEP -1
- LPRINT CHR$(zeile1&(i&));
- NEXT i&
- '
- LPRINT CHR$(13);
- NEXT z%
- '
- IF res%>0
- @def_prn(5)
- LPRINT
- FOR z%=0 TO 2^n%-1
- @def_prn(2)
- '
- FOR i&=1 TO 120 ! RAND
- LPRINT CHR$(0);
- NEXT i&
- FOR i&=1599 TO 0 STEP -1
- LPRINT CHR$(zeile2&(i&));
- NEXT i&
- '
- LPRINT CHR$(13);
- NEXT z%
- ENDIF
- ENDIF
- '
- ARRAYFILL zeile1&(),0
- ARRAYFILL zeile2&(),0
- IF dummy%=1 ! s&=639 : spaltenschleife ENDE
- s&=639
- ENDIF
- NEXT s&
- '
- LPRINT CHR$(12) !FF
- ' ERASE zeile1&(),zeile2&() ! beide zeilen weg!!
- RETURN
- > PROCEDURE skip(wert&,nadel|)
- IF res%>0
- IF wert&+PTST(s&+nadel|,i&-1)=(128/2^nadel|)+1 ! rechts noch einer?
- ADD zeile1&(4*i&-2),wert&
- ENDIF
- IF wert&+PTST(s&+nadel|+1,i&)=(128/2^nadel|)+1 ! drunter noch einer?
- ADD zeile2&(4*i&),wert&
- ENDIF
- IF res%>1
- IF wert&+PTST(s&+nadel|+1,i&-1)=(128/2^nadel|)+1 ! rechts drunter einer?
- ADD zeile2&(4*i&-2),wert&
- ENDIF
- IF wert&+PTST(s&+nadel|+1,i&+1)=(128/2^nadel|)+1 ! links drunter einer?
- ADD zeile2&(4*i&+2),wert&
- ENDIF
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE def_prn(index#)
- LOCAL z#,s#
- z#=index#
- FOR s#=2 TO seq#(z#,1)+1
- LPRINT CHR$(seq#(z#,s#));
- NEXT s#
- RETURN
- > PROCEDURE def_read ! drucker_def für hardcopy-spezial
- seq#(0,0)=1
- seq#(0,1)=3
- seq#(0,2)=27
- seq#(0,3)=85
- seq#(0,4)=0
- seq#(1,0)=2
- seq#(1,1)=3
- seq#(1,2)=27
- seq#(1,3)=85
- seq#(1,4)=1
- seq#(2,0)=3
- seq#(2,1)=4
- seq#(2,2)=27
- seq#(2,3)=90
- seq#(2,4)=184
- seq#(2,5)=6
- seq#(3,0)=4
- seq#(3,1)=3
- seq#(3,2)=27
- seq#(3,3)=51
- seq#(3,4)=23
- seq#(4,0)=5
- seq#(4,1)=3
- seq#(4,2)=27
- seq#(4,3)=51
- seq#(4,4)=21
- seq#(5,0)=6
- seq#(5,1)=3
- seq#(5,2)=27
- seq#(5,3)=51
- seq#(5,4)=2
- seq#(6,0)=7
- seq#(6,1)=8
- seq#(6,2)=128
- seq#(6,3)=64
- seq#(6,4)=32
- seq#(6,5)=16
- seq#(6,6)=8
- seq#(6,7)=4
- seq#(6,8)=2
- seq#(6,9)=1
- RETURN
- > PROCEDURE messagebox
- LOCAL redraw$,cmessage_adr%
- '
- LET cmessage&=3 !RSC_TREE
- LET boxname&=2 !Obj in #3
- LET zeile1&=4 !Obj in #3
- LET zeile2&=5 !Obj in #3
- LET zeile3&=6 !Obj in #3
- LET zeile4&=7 !Obj in #3
- LET zeile5&=8 !Obj in #3
- LET okbutton&=9 !Obj in #3
- LET zeile6&=10 !Obj in #3
- LET version&=11 !Obj in #3
- '
- ~RSRC_GADDR(0,cmessage&,cmessage_adr%) ! adresse zuweisen
- ~FORM_CENTER(cmessage_adr%,x&,y&,w&,h&) ! ausdehnung holen
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ ! redraw vorbereiten
- '
- CHAR{{OB_SPEC(cmessage_adr%,version&)}}=version$ ! version einsetzen
- ~OBJC_DRAW(cmessage_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- ~FORM_DO(cmessage_adr%,0) ! OK-button abwarten
- OB_STATE(cmessage_adr%,9)=BCLR(OB_STATE(cmessage_adr%,9),0) ! ok-button AUS
- PUT x&-4,y&-4,redraw$ ! redraw
- RETURN
- > PROCEDURE datenfile_laden
- LOCAL filename$,stelle1|,stelle2|,a|
- FILESELECT pfad$+"*.kw",kw$+".kw",filename$
- IF filename$<>"" AND filename$<>pfad$
- a|=RINSTR(filename$,"\")
- pfad$=LEFT$(filename$,a|) ! pfad für alle neu
- '
- CLS
- @bildaufbau
- @default !blatt neu initialisieren
- IF EXIST(filename$)
- OPEN "I",#1,filename$
- '
- FOR i|=0 TO 6 !i| = zeilenschleife
- FOR z|=0 TO 7 !z| = spaltenschleife
- INPUT #1,werte#(z|,i|)
- NEXT z|
- INPUT #1,ort$(i|)
- INPUT #1,h_aussen#(i|)
- INPUT #1,h_calc#(i|)
- FOR z|=0 TO 2 !z| = hier buttonschleife / tag
- INPUT #1,button#(z|,i|)
- NEXT z|
- @buttons_nachzeichnen(i|)
- NEXT i|
- CLOSE #1
- stelle1|=RINSTR(filename$,"\")+1
- stelle2|=RINSTR(filename$,".")
- kw$=MID$(filename$,stelle1|,stelle2|-stelle1|)
- IF MID$(ort$(i|),3,1)="." AND MID$(ort$(i|),6,1)="."
- ort$(i|)=ort$(i|)
- ENDIF
- ENDIF
- @def_laden
- @werte_eintragen
- ENDIF
- RETURN
- > PROCEDURE datenfile_speichern
- LOCAL filename$,a|
- FILESELECT pfad$+"*.kw",kw$+".kw",filename$
- IF filename$<>"" AND filename$<>pfad$
- a|=RINSTR(filename$,"\")
- pfad$=LEFT$(filename$,a|) ! pfad für alle neu
- '
- OPEN "O",#1,filename$
- '
- FOR i|=0 TO 6 !i| = zeilenschleife
- FOR z|=0 TO 7 !z| = spaltenschleife
- WRITE #1,werte#(z|,i|)
- NEXT z|
- WRITE #1,ort$(i|)
- WRITE #1,h_aussen#(i|)
- WRITE #1,h_calc#(i|)
- FOR z|=0 TO 2 !z| = hier buttonschleife / tag
- WRITE #1,button#(z|,i|)
- NEXT z|
- NEXT i|
- CLOSE #1
- ENDIF
- RETURN
- > PROCEDURE buttons_nachzeichnen(i|) ! wird gebraucht, wenn
- y1#=ybase#+sprung#*(i|+1)-5 ! file geladen wird...
- y2#=ybase#+sprung#*(i|+1)-15 ! zum einzeichnen der buttons
- IF button#(0,i|)=1
- @markieren(120,y1#,130,y2#)
- ENDIF
- IF button#(1,i|)=1
- @markieren(140,y1#,150,y2#)
- ENDIF
- IF button#(2,i|)=1
- @markieren(160,y1#,170,y2#)
- ENDIF
- RETURN
- > PROCEDURE formular
- LOCAL redraw$,form_adr%
- LET drucken&=4 !RSC_TREE
- LET printyes&=17 !Obj in #4
- LET printno&=18 !Obj in #4
- '
- ~RSRC_GADDR(0,drucken&,form_adr%) ! adresse zuweisen
- ~FORM_CENTER(form_adr%,x&,y&,w&,h&) ! ausdehnung holen
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ !redraw vorbereiten
- '
- ~OBJC_DRAW(form_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- a%=FORM_DO(form_adr%,0) ! OK-button abwarten
- SELECT BCLR(a%,15) !ohne doppelclick
- CASE printyes& ! OK-FELD
- woche!=TRUE
- @auf_formular_drucken
- OB_STATE(form_adr%,printyes&)=BCLR(OB_STATE(form_adr%,printyes&),0) !ok-feld aus
- CASE printno&
- OB_STATE(form_adr%,printno&)=BCLR(OB_STATE(form_adr%,printno&),0) !cancel-feld aus
- ENDSELECT
- PUT x&-4,y&-4,redraw$ ! redraw
- RETURN
- > PROCEDURE liste_drucken
- LOCAL dummy|
- IF OUT?(0)=TRUE
- ALERT 2,"Ausgabe auf Drucker ??",1," JA| NEIN ",dummy|
- IF dummy|=1
- LPRINT "Name : ";nomen$
- LPRINT "Personalnummer : ";persnr$
- LPRINT "Kostenstelle : ";kostst$
- LPRINT "Kalenderwoche : ";kw$;" von ";datum$(0);" bis ";datum$(6)
- LPRINT
- LPRINT
- LPRINT "Tag| KM | KM-DM |M|F|E| VON | OUT | BIS | TAGSP |NACHTSP|n.BELEG|NEBENKO| SUMME"
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Mo |";werte#(0,0);TAB(8);"|";werte#(1,0);TAB(16);"|";button#(0,0);
- LPRINT TAB(18);"|";button#(1,0);TAB(20);"|";button#(2,0);"|";werte#(2,0);TAB(28);"|";
- LPRINT h_aussen#(0);TAB(34);"|";werte#(3,0);TAB(40);"|";werte#(4,0);
- LPRINT TAB(48);"|";werte#(5,0);TAB(56);"|";werte#(6,0);TAB(64);"|";werte#(7,0);TAB(72);"|";werte#(0,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Di |";werte#(0,1);TAB(8);"|";werte#(1,1);TAB(16);"|";button#(0,1);
- LPRINT TAB(18);"|";button#(1,1);TAB(20);"|";button#(2,1);"|";werte#(2,1);TAB(28);"|";
- LPRINT h_aussen#(1);TAB(34);"|";werte#(3,1);TAB(40);"|";werte#(4,1);
- LPRINT TAB(48);"|";werte#(5,1);TAB(56);"|";werte#(6,1);TAB(64);"|";werte#(7,1);TAB(72);"|";werte#(1,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Mi |";werte#(0,2);TAB(8);"|";werte#(1,2);TAB(16);"|";button#(0,2);
- LPRINT TAB(18);"|";button#(1,2);TAB(20);"|";button#(2,2);"|";werte#(2,2);TAB(28);"|";
- LPRINT h_aussen#(2);TAB(34);"|";werte#(3,2);TAB(40);"|";werte#(4,2);
- LPRINT TAB(48);"|";werte#(5,2);TAB(56);"|";werte#(6,2);TAB(64);"|";werte#(7,2);TAB(72);"|";werte#(2,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Do |";werte#(0,3);TAB(8);"|";werte#(1,3);TAB(16);"|";button#(0,3);
- LPRINT TAB(18);"|";button#(1,3);TAB(20);"|";button#(2,3);"|";werte#(2,3);TAB(28);"|";
- LPRINT h_aussen#(3);TAB(34);"|";werte#(3,3);TAB(40);"|";werte#(4,3);
- LPRINT TAB(48);"|";werte#(5,3);TAB(56);"|";werte#(6,3);TAB(64);"|";werte#(7,3);TAB(72);"|";werte#(3,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Fr |";werte#(0,4);TAB(8);"|";werte#(1,4);TAB(16);"|";button#(0,4);
- LPRINT TAB(18);"|";button#(1,4);TAB(20);"|";button#(2,4);"|";werte#(2,4);TAB(28);"|";
- LPRINT h_aussen#(4);TAB(34);"|";werte#(3,4);TAB(40);"|";werte#(4,4);
- LPRINT TAB(48);"|";werte#(5,4);TAB(56);"|";werte#(6,4);TAB(64);"|";werte#(7,4);TAB(72);"|";werte#(4,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "Sa |";werte#(0,5);TAB(8);"|";werte#(1,5);TAB(16);"|";button#(0,5);
- LPRINT TAB(18);"|";button#(1,5);TAB(20);"|";button#(2,5);"|";werte#(2,5);TAB(28);"|";
- LPRINT h_aussen#(5);TAB(34);"|";werte#(3,5);TAB(40);"|";werte#(4,5);
- LPRINT TAB(48);"|";werte#(5,5);TAB(56);"|";werte#(6,5);TAB(64);"|";werte#(7,5);TAB(72);"|";werte#(5,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT "So |";werte#(0,6);TAB(8);"|";werte#(1,6);TAB(16);"|";button#(0,6);
- LPRINT TAB(18);"|";button#(1,6);TAB(20);"|";button#(2,6);"|";werte#(2,6);TAB(28);"|";
- LPRINT h_aussen#(6);TAB(34);"|";werte#(3,6);TAB(40);"|";werte#(4,6);
- LPRINT TAB(48);"|";werte#(5,6);TAB(56);"|";werte#(6,6);TAB(64);"|";werte#(7,6);TAB(72);"|";werte#(6,8);
- LPRINT CHR$(13)
- LPRINT "---+----+-------+-+-+-+-----+-----+-----+-------+-------+-------+-------+-------";
- LPRINT CHR$(13)
- LPRINT CHR$(228);" |";werte#(0,7);TAB(8);"|";werte#(1,7);TAB(16);"| Mehrarbeit: ";
- LPRINT TAB(31);mehrarbeit#;
- LPRINT TAB(40);"|";werte#(4,7);
- LPRINT TAB(48);"|";werte#(5,7);TAB(56);"|";werte#(6,7);TAB(64);"|";werte#(7,7);TAB(72);"|";summeh#;
- LPRINT CHR$(13)
- LPRINT "--------------------------------------------------------------------------------"
- LPRINT CHR$(13)
- LPRINT
- LPRINT "Ort und Gesprächspartner (beginnend mit Montag) :"
- LPRINT
- FOR dummy|=0 TO 6
- LPRINT dummy|+1;" ";;ort$(dummy|)
- NEXT dummy|
- ENDIF
- ELSE
- ALERT 3," |************************|* Drucker nicht online *|************************",1," OK ",dummy|
- ENDIF
- RETURN
- > PROCEDURE auf_formular_drucken
- LOCAL zeile$,dummy|,n|,z$,tag|,tag$,teil|,code|,picture$,ok!
- LOCAL woche$,a$,w|,code$,mehrarbeit#
- ok!=FALSE
- IF EXIST("spesen.frm") AND woche!=TRUE
- OPEN "I",#1,"spesen.frm"
- ok!=TRUE
- ENDIF
- IF EXIST("spesenmo.frm") AND woche!=FALSE
- OPEN "I",#1,"spesenmo.frm"
- ok!=TRUE
- ENDIF
- IF ok!=TRUE
- WHILE INSTR(LEFT$(zeile$,4),"@@")=0 ! solange nicht EOF
- LINE INPUT #1,zeile$ ! Zeile einlesen
- z$=LEFT$(zeile$,2) ! Steuercode extrahieren
- SELECT UPPER$(TRIM$(z$)) ! ohne Leerzeichen
- CASE "I" ! Steuersequenz Drucker
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! STEUERCODE WEG
- REPEAT
- tag$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! Spalte extrah.
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- LPRINT CHR$(VAL(tag$));
- UNTIL INSTR(zeile$,",")=0
- LPRINT CHR$(VAL(zeile$));
- CASE "T" ! Textteile
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Text extrah.
- '
- IF UPPER$(TRIM$(zeile$))="STANDARDTEXT"
- LPRINT TAB(n|);standardtext$;
- ELSE IF UPPER$(TRIM$(zeile$))="KALENDERWOCHE"
- LPRINT TAB(n|);kw$;
- ELSE IF UPPER$(TRIM$(zeile$))="PERSONALNUMMER"
- LPRINT TAB(n|);persnr$;
- ELSE IF UPPER$(TRIM$(zeile$))="KOSTENSTELLE"
- LPRINT TAB(n|);kostst$;
- ELSE IF UPPER$(TRIM$(zeile$))="NAME"
- LPRINT TAB(n|);nomen$;
- ELSE
- LPRINT TAB(n|);TRIM$(zeile$);
- ENDIF
- CASE "O" ! Ortszeile
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- tag$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! Tag
- teil|=VAL(RIGHT$(zeile$,LEN(zeile$)-RINSTR(zeile$,",")))! Teil extrah.
- @tag_holen(tag$,tag|)
- @ortszeile_aufteilen(tag|)
- SELECT teil|
- CASE 1
- LPRINT TAB(n|);ort1$;
- CASE 2
- LPRINT TAB(n|);ort2$;
- CASE 3
- LPRINT TAB(n|);ort3$;
- ENDSELECT
- CASE "M" ! Mehrtägig
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- tag$=LEFT$(zeile$,INSTR(zeile$,",")) ! Tag
- @tag_holen(tag$,tag|)
- IF button#(0,tag|)=1
- LPRINT TAB(n|);"M";
- ENDIF
- CASE "F" ! Frühstück
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- tag$=LEFT$(zeile$,INSTR(zeile$,",")) ! Tag
- @tag_holen(tag$,tag|)
- IF button#(1,tag|)=1
- LPRINT TAB(n|);"F";
- ENDIF
- CASE "E" ! Essen
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- tag$=LEFT$(zeile$,INSTR(zeile$,",")) ! Tag
- @tag_holen(tag$,tag|)
- IF button#(2,tag|)=1
- LPRINT TAB(n|);"E";
- ENDIF
- CASE "Z"
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,","))) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- tag$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! Tag
- @tag_holen(tag$,tag|) ! Tag (0-6)
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- code|=VAL(LEFT$(zeile$,INSTR(zeile$,","))) ! code
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- picture$=LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! picture$
- LPRINT TAB(n|);USING picture$,werte#(code|,tag|);
- CASE "H"
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- tag$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! Tag
- @tag_holen(tag$,tag|) ! Tag (0-6)
- picture$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- LPRINT TAB(n|);USING picture$,werte#(tag|,8);
- CASE "V" ! vert. Summe
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- code|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! code
- picture$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- LPRINT TAB(n|);USING picture$,werte#(code|,7);
- CASE "S" ! Gesamtsumme
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- picture$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- LPRINT TAB(n|);USING picture$,summeh#;
- CASE "D" ! MONAT - Dateinamen
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,INSTR(zeile$,",")-1)) ! n| ist Spalte
- woche$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- w|=VAL(woche$) ! Index Woche
- a$=SPACE$(7)
- RSET a$=RIGHT$(f_name$(w|),LEN(f_name$(w|))-RINSTR(f_name$(w|),"\"))
- LPRINT TAB(n|);a$;
- CASE "W"
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,","))) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- woche$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! Woche$
- w|=VAL(woche$) ! Woche (0-4)
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- code$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! code$
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- picture$=LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! picture$
- SELECT UPPER$(TRIM$(code$)) ! code$ zu
- CASE "KMDM" ! indizes
- code|=1
- LPRINT TAB(n|);USING picture$,week#(code|,w|);
- CASE "TS"
- code|=4
- LPRINT TAB(n|);USING picture$,week#(code|,w|);
- CASE "NS"
- code|=5
- LPRINT TAB(n|);USING picture$,week#(code|,w|);
- CASE "SNB"
- code|=6
- LPRINT TAB(n|);USING picture$,week#(code|,w|);
- CASE "NK"
- code|=7
- LPRINT TAB(n|);USING picture$,week#(code|,w|);
- CASE "ZEIT"
- code|=10
- mehrarbeit#=0
- mehrarbeit#=TRUNC(week#(code|,w|))+FRAC(week#(code|,w|))*1.66666
- IF mehrarbeit#>0
- mehrarbeit#=-wochenstunden#+mehrarbeit#-mittag#
- mehrarbeit#=ROUND(TRUNC(mehrarbeit#)+FRAC(mehrarbeit#)*0.6,2)
- IF ROUND(FRAC(mehrarbeit#),2)=0.6
- mehrarbeit#=TRUNC(mehrarbeit#)+1
- ENDIF
- ENDIF
- '
- LPRINT TAB(n|);USING picture$,mehrarbeit#;
- CASE "SUM"
- code|=0
- LPRINT TAB(n|);USING picture$,weeksum#(w|,6);
- ENDSELECT
- CASE "G"
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Spalte extrah.
- n|=VAL(LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,","))) ! n| ist Spalte
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- code$=LEFT$(zeile$,INSTR(zeile$,",")-1) ! code$
- zeile$=RIGHT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! Rest der Zeile
- picture$=LEFT$(zeile$,LEN(zeile$)-INSTR(zeile$,",")) ! picture$
- SELECT UPPER$(TRIM$(code$)) ! code$ zu
- CASE "KMDM" ! indizes
- code|=0
- CASE "TS"
- code|=1
- CASE "NS"
- code|=2
- CASE "SNB"
- code|=3
- CASE "NK"
- code|=4
- CASE "ZEIT"
- code|=5
- CASE "SUM"
- code|=6
- ENDSELECT
- LPRINT TAB(n|);USING picture$,weeksum#(5,code|);
- CASE "CR" ! carriage return
- dummy|=VAL(RIGHT$(zeile$,LEN(zeile$)-RINSTR(zeile$,",")))
- FOR n|=0 TO dummy|
- LPRINT CHR$(13)
- NEXT n|
- ENDSELECT
- WEND
- CLOSE #1
- ELSE
- ALERT 1,"Datei SPESEN.FRM od.|Datei SPESENMO.FRM| nicht im aktuellen|Directory zu finden!",1," OK ",dummy|
- ENDIF
- RETURN
- > PROCEDURE tag_holen(VAR tag$,tag|)
- SELECT UPPER$(TRIM$(tag$))
- CASE "MO"
- tag|=0
- CASE "DI"
- tag|=1
- CASE "MI"
- tag|=2
- CASE "DO"
- tag|=3
- CASE "FR"
- tag|=4
- CASE "SA"
- tag|=5
- CASE "SO"
- tag|=6
- ENDSELECT
- RETURN
- > PROCEDURE statistik
- LOCAL dummy|,z1$,z2$,z3$,z4$
- ' wenn KWREAD_FLAG| = 1 dann noch keine kw-files gelesen
- ' wenn KWREAD_FLAG| = 2 dann sind kw-files eingelesen
- ~MENU_TNORMAL(menu_adr%,MENU(4),1) ! menu aus
- z1$="--.KW Dateien lesen = LESEN|"
- z2$="Direkt zur Statistik = STATIST|"
- z3$="Nix da, zurück = ZURÜCK|"
- IF kwread_flag|<>2
- kwread_flag|=1 ! 0 bei prgstart möglich
- z4$="--> KEINE DATEN GELADEN <--"
- ELSE
- z4$="--> DATEN SIND GELADEN <--"
- ENDIF
- ALERT 2,z1$+z2$+z3$+z4$,kwread_flag|,"LESEN|STATIST|ZURÜCK",dummy|
- IF dummy|=1 ! noch nicht drin also einlesen
- ERASE woche#() ! alte felder weg = leer
- ERASE wochesum#()
- ERASE jahr#()
- ERASE zeilen$()
- '
- DIM zeilen$(200) ! neue felder her = leer
- DIM woche#(13,52)
- DIM jahr#(15)
- DIM wochesum#(52)
- @wochen_laden
- IF raus$<>CHR$(27)
- kwread_flag|=2 ! wenn kein esc= abbruch beim einlesen
- @statistik ! wenn geladen dann neue auswahl
- ENDIF
- ENDIF
- IF dummy|=2
- IF kwread_flag|=1 ! wenn noch keine daten da, dann erst einlesen
- @statistik
- ENDIF
- IF kwread_flag|=2 AND raus$<>CHR$(27)
- @stat_box
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE wochen_laden
- LOCAL fname$,w|,redraw$,dummy|,h#,m#
- '
- a$="Bitte wählen Sie das Directory|"
- b$="in dem Ihre Datenfiles (nn.KW)|"
- c$="gelesen werden sollen. Direct.|"
- d$="öffnen und OK clicken reicht.."
- ALERT 3,a$+b$+c$+d$,1," OK ",dummy|
- FILESELECT pfad$,"",filename$
- a|=RINSTR(filename$,"\")
- pfad$=LEFT$(filename$,a|) ! pfad für alle neu
- '
- kws|=0 ! anzahl wochen=0
- GET 196,136,444,275+20,redraw$ ! redraw vorbereiten
- DEFFILL 1,0
- PBOX 200,140,440,275
- PBOX 203,143,436,272
- TEXT 250,170,"Es wird gerade die"
- TEXT 270,190,"Kalenderwoche"
- TEXT 280,230,"geladen ..."
- TEXT 270,260,"ESC = Abbruch"
- '
- WHILE w|<52 ! anzahl wochen 52 (w|)
- INC w|
- fname$=pfad$+STR$(w|)+".KW"
- TEXT 310,210,STR$(w|) ! kw ausgeben
- '
- raus$=INKEY$ ! abbruch mit esc
- EXIT IF raus$=CHR$(27) ! jawoll
- '
- IF EXIST(fname$) ! wenn fname$ existiert, so wird er geladen
- INC kws| ! anzahl geladener wochen
- OPEN "I",#1,fname$ ! so läuft die routine durch
- RECALL #1,zeilen$(),-1,zeilenanzahl# ! alle wochen mit inhalt
- CLOSE
- FOR i&=0 TO zeilenanzahl#-1 STEP 14 !-->>WOCHENSUMMEN BILDEN
- ADD woche#(0,w|),VAL(zeilen$(i&)) !KM
- ADD woche#(1,w|),VAL(zeilen$(i&+1)) !KM-DM
- ADD woche#(2,w|),VAL(zeilen$(i&+2)) !h-Anf.
- ADD woche#(3,w|),VAL(zeilen$(i&+3)) !h-Ende
- ADD woche#(4,w|),VAL(zeilen$(i&+4)) !Spesen Tag
- ADD woche#(5,w|),VAL(zeilen$(i&+5)) !Spesen Nacht
- ADD woche#(6,w|),VAL(zeilen$(i&+6)) !Spesen n. Beleg
- ADD woche#(7,w|),VAL(zeilen$(i&+7)) !Nebenkosten
- ADD woche#(8,w|),VAL(zeilen$(i&+8)) !Ort
- ADD woche#(9,w|),VAL(zeilen$(i&+9)) !h-aussen
- IF INSTR(zeilen$(i&+8),standardtext$)>0 ! wenn büro dann pause
- h#=TRUNC(VAL(zeilen$(i&+10)))
- m#=(FRAC(VAL(zeilen$(i&+10)))*1.66666)-0.5
- zeilen$(i&+10)=STR$(h#+m#) !h-Ende - 1/2 stunde
- ENDIF
- ADD woche#(10,w|),VAL(zeilen$(i&+10)) !h-calc
- ADD woche#(11,w|),VAL(zeilen$(i&+11)) !button 0 M
- ADD woche#(12,w|),VAL(zeilen$(i&+12)) ! " 1 F
- ADD woche#(13,w|),VAL(zeilen$(i&+13)) ! " 2 E
- wochesum#(w|)=woche#(1,w|)+woche#(4,w|)+woche#(5,w|)+woche#(6,w|)+woche#(7,w|)
- NEXT i&
- ENDIF
- ADD jahr#(0),woche#(0,w|) ! jahres - KM
- ADD jahr#(1),woche#(1,w|) ! jahres - KM-DM
- ADD jahr#(2),woche#(2,w|) ! jahres - h-Anf.
- ADD jahr#(3),woche#(3,w|) ! jahres - h-Ende
- ADD jahr#(4),woche#(4,w|) ! jahres - Spesen Tag
- ADD jahr#(5),woche#(5,w|) ! jahres - Spesen Nacht
- ADD jahr#(6),woche#(6,w|) ! jahres - Spesen n. Beleg
- ADD jahr#(7),woche#(7,w|) ! jahres - Nebenkosten
- ADD jahr#(8),woche#(8,w|) ! jahres - Ort
- ADD jahr#(9),woche#(9,w|) ! jahres - h-aussen
- ADD jahr#(10),woche#(10,w|) ! jahres - h-calc
- ADD jahr#(11),woche#(11,w|) ! jahres - button 0 M
- ADD jahr#(12),woche#(12,w|) ! jahres - " 1 F
- ADD jahr#(13),woche#(13,w|) ! jahres - " 2 E
- ADD jahr#(14),wochesum#(w|) ! jahres - summe aller spesen
- WEND
- PUT 196,136,redraw$ ! redraw
- RETURN
- > PROCEDURE stat_box
- LOCAL backgr$,stat_adr%,a$
- LET stat&=5 !RSC_TREE
- LET wochen&=12 !Obj in #5 kws| = anzahl geladener wochen
- LET ad&=13 !Obj in #5 jahr(11) = anzahl aussendiensttage
- LET essen&=14 !Obj in #5 jahr(13) = anzahl geschäftsessen
- LET km&=15 !Obj in #5 jahr(0) = gefahrene KM
- LET kmdm&=16 !Obj in #5 jahr(1) = erhaltenes km-geld
- LET ts&=17 !Obj in #5 jahr(4) = erhaltene tagesspesen
- LET ns&=18 !Obj in #5 jahr(5) = abgerechnete nachtspesen
- LET snb&=19 !Obj in #5 jahr(6) = abgerechnete spesen n.beleg
- LET nk&=20 !Obj in #5 jahr(7) = abgerechnete nebenkosten
- LET sum&=21 !Obj in #5 jahr(14) = summe aller abger. wochen
- '
- LET woarbzgr&=22 !Obj in #5 Grafik-radio-buttons
- LET kmgr&=23 !Obj in #5
- LET kmdmgr&=24 !Obj in #5
- LET tsgr&=25 !Obj in #5
- LET nsgr&=26 !Obj in #5
- LET snbgr&=27 !Obj in #5
- LET nkgr&=28 !Obj in #5
- LET sumgr&=29 !Obj in #5
- LET grafik&=30 !Obj in #5 Grafik aufrufen
- LET zurueck&=31 !Obj in #5 zurück zum eingabefeld
- '
- ~RSRC_GADDR(0,stat&,stat_adr%) ! adresse zuweisen
- ~FORM_CENTER(stat_adr%,x&,y&,w&,h&) ! ausdehnung holen
- SGET backgr$ ! redraw vorbereiten
- '
- CHAR{{OB_SPEC(stat_adr%,wochen&)}}=STR$(kws|) ! wertzuweisung
- CHAR{{OB_SPEC(stat_adr%,ad&)}}=STR$(jahr#(11)) ! der Jahres-
- CHAR{{OB_SPEC(stat_adr%,essen&)}}=STR$(jahr#(13)) ! summen
- CHAR{{OB_SPEC(stat_adr%,km&)}}=STR$(jahr#(0))
- a$=STR$(jahr#(1),8,2)
- CHAR{{OB_SPEC(stat_adr%,kmdm&)}}=a$ ! mit vorgeschalteter
- '
- a$=STR$(jahr#(4),7,2)
- CHAR{{OB_SPEC(stat_adr%,ts&)}}=a$ ! anpassung der
- '
- a$=STR$(jahr#(5),7,2)
- CHAR{{OB_SPEC(stat_adr%,ns&)}}=a$ ! nachkommastellen
- '
- a$=STR$(jahr#(6),7,2)
- CHAR{{OB_SPEC(stat_adr%,snb&)}}=a$
- '
- a$=STR$(jahr#(7),7,2)
- CHAR{{OB_SPEC(stat_adr%,nk&)}}=a$
- '
- a$=STR$(jahr#(14),8,2)
- CHAR{{OB_SPEC(stat_adr%,sum&)}}=a$
- '
- '
- ~OBJC_DRAW(stat_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- a%=FORM_DO(stat_adr%,0) ! EXIT-button abwarten
- '
- SELECT BCLR(a%,15) !ohne doppelclick
- CASE grafik& ! GRAFIK-FELD-buttons
- IF OB_STATE(stat_adr%,woarbzgr&)=1 ! wochenarbeitszeit gewählt
- buttonkennung|=1
- mittelflag!=TRUE
- defaultvalue#=37.5
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,kmgr&)=1 ! KMfeld gewählt
- buttonkennung|=2
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,kmdmgr&)=1 ! kilometergeld gewählt
- buttonkennung|=3
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,tsgr&)=1 ! tagesspesen gewählt
- buttonkennung|=4
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,nsgr&)=1 ! nachtspesen gewählt
- buttonkennung|=5
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,snbgr&)=1 ! spesen n. beleg gewählt
- buttonkennung|=6
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,nkgr&)=1 ! nebenkosten gewählt
- buttonkennung|=7
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ELSE IF OB_STATE(stat_adr%,sumgr&)=1 ! spesensumme gewählt
- buttonkennung|=8
- mittelflag!=TRUE
- defaultvalue#=0
- @stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ENDIF
- OB_STATE(stat_adr%,grafik&)=0 !grafikfeld aus
- CASE zurueck& ! ZURÜCK-FELD
- OB_STATE(stat_adr%,zurueck&)=0 !zurück-feld aus
- ENDSELECT
- SPUT backgr$ ! redraw
- RETURN
- > PROCEDURE stat_grafik(buttonkennung|,mittelflag!,defaultvalue#)
- ' buttonkennung| = nummer des aktiven buttons (1 - 8)
- ' mittelflag! = wenn TRUE, dann horizontal das mittel einzeichnen
- ' defaultvalue = z.B. horizontaler strich bei 37.5 wochenarb.std
- '
- LOCAL x0#,y0#,x1#,y1#,headline$,max#,skala#,sumskala#,exp|,yskala1#,teilung1#
- LOCAL yskala2#,teilung2#,xname$,mittel#,i|,n|
- DIM wo_wert#(53),sum_wo_wert#(53)
- '
- IF buttonkennung|=1 ! wochenarbeitszeit gewählt
- headline$="DARSTELLUNG DER WOCHENARBEITSZEIT [h]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(10,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=2 ! kilometer gewählt
- headline$="DARSTELLUNG DER REISEKILOMETER [KM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(0,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=3 ! kilometergeld gewählt
- headline$="DARSTELLUNG DES KILOMETERGELDES [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(1,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=4 ! tagesspesen gewählt
- headline$="DARSTELLUNG DER TAGESSPESEN [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(4,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=5 ! nachtspesen gewählt
- headline$="DARSTELLUNG DER NACHTSPESEN [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(5,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=6 ! spesen n. beleg gewählt
- headline$="DARSTELLUNG DER SPESEN NACH BELEG [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(6,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=7 ! nebenkosten gewählt
- headline$="DARSTELLUNG DER NEBENKOSTEN [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=woche#(7,i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- '
- ELSE IF buttonkennung|=8 ! summe-spesen gewählt
- headline$="DARSTELLUNG DER WOCHENSPESEN [DM]"
- xname$="KW"
- FOR i|=0 TO 52
- wo_wert#(i|)=wochesum#(i|) ! übergabe an wo_wert()
- sum_wo_wert#(i|+1)=sum_wo_wert#(i|)+wo_wert#(i|) ! Summenbildung (1 - 52)
- IF wo_wert#(i|)>max#
- max#=wo_wert#(i|) ! maximum holen
- ENDIF
- NEXT i|
- mittel#=sum_wo_wert#(53)/kws|
- skala#=INT(max#)
- sumskala#=INT(sum_wo_wert#(53)) ! läuft von 1-52
- ENDIF
- '
- ' G R A F I K T E I L
- CLS
- x0#=100
- y0#=340
- x1#=x0#+52*10
- y1#=20
- LINE x0#,y0#,x1#+20,y0# ! basislinie (x-achse)
- LINE x0#,y0#,x0#,y1# ! y-achse
- LINE x0#-40,y0#,x0#-40,y1#
- DEFTEXT 1,0,0,4
- FOR i|=1 TO 52 ! x-achse teilung einzeichen
- LINE x0#+10*i|,y0#,x0#+10*i|,y0#+3
- IF MOD(i|,5)=0 ! wenn teilung =5 oder =10
- TEXT x0#-(LEN(STR$(i|))*2)+10*i|,y0#+15,STR$(i|) ! dann strich länger
- LINE x0#+10*i|,y0#,x0#+10*i|,y0#+6 ! und kw-nummer zentriert
- ENDIF
- NEXT i|
- DEFTEXT 1,0,0,13
- TEXT x1#-100,y0#+33,xname$ ! x-achse name
- mitte|=320-(LEN(headline$)/2)*8 ! headline zentrieren
- TEXT mitte|,y1#-2,headline$ ! headline ausgeben
- '
- ' yachse1 auf pixel (y0-(y0-y1)), wochenwerte
- DEFTEXT 1,0,0,4
- exp|=LEN(STR$(skala#)) !länge vorkommaseite
- yskala1#=(VAL(LEFT$(STR$(max#),1))+1)*(10^(exp|-1))! wenn wert 51, dann
- teilung1#=(y0#-y1#)/yskala1# ! left$=5+1*10^1=60...
- FOR i|=1 TO VAL(LEFT$(STR$(max#),1))+1 ! bei 51 also bis 6
- LINE x0#,y0#-teilung1#*i|*10^(exp|-1),x0#-3,y0#-teilung1#*i|*10^(exp|-1)
- TEXT x0#-30,y0#+2-teilung1#*i|*10^(exp|-1),STR$(i|*10^(exp|-1))
- NEXT i|
- '
- ' yachse2 auf pixel (y0-(y0-y1)), JAHRESSUMME
- DEFTEXT 1,0,0,4
- exp|=LEN(STR$(sumskala#)) !länge vorkommaseite
- yskala2#=(VAL(LEFT$(STR$(sumskala#),1))+1)*(10^(exp|-1))! wenn wert 51, dann
- teilung2#=(y0#-y1#)/yskala2# ! left$=5+1*10^1=60...
- FOR i|=1 TO VAL(LEFT$(STR$(sumskala#),1))+1 ! bei 51 also bis 6
- LINE x0#-40,y0#-teilung2#*i|*10^(exp|-1),x0#-40-3,y0#-teilung2#*i|*10^(exp|-1)
- TEXT x0#-40-30,y0#+2-teilung2#*i|*10^(exp|-1),STR$(i|*10^(exp|-1))
- NEXT i|
- TEXT x0#-32,y0#,"WOCHE"
- TEXT x0#-67,y0#,"JAHR"
- '
- DEFFILL 1,2,4
- FOR i|=1 TO 53
- PBOX x0#+10*(i|)-2,y0#,x0#+10*(i|)+2,y0#-(wo_wert#(i|)*teilung1#)
- LINE x0#+10*(i|-2),y0#-(sum_wo_wert#(i|-1)*teilung2#),x0#+10*(i|-1),y0#-(sum_wo_wert#(i|)*teilung2#)
- NEXT i|
- IF mittelflag!=TRUE
- LINE x0#,y0#-mittel#*teilung1#,x1#+2,y0#-mittel#*teilung1# ! MITTELLINIE
- TEXT x1#-80,y0#-mittel#*teilung1#+2,"MITTEL/WOCHE"
- ENDIF
- IF defaultvalue#>0
- LINE x0#,y0#-defaultvalue#*teilung1#,x1#+2,y0#-defaultvalue#*teilung1# ! DEFAULT-linie
- TEXT x1#-70,y0#-defaultvalue#*teilung1#+2,"SOLL/WOCHE"
- ENDIF
- DEFTEXT 1,0,0,6
- TEXT 50,WORK_OUT(1)-20,"TASTE 'ESC' : ZURÜCK , TASTE 'H' : HARDCOPY"
- DO
- d$=INKEY$
- IF d$="H" OR d$="h"
- TEXT 50,WORK_OUT(1)-20,SPACE$(50) ! infotxt weg
- @select_hardcopy
- d$=CHR$(27)
- ENDIF
- EXIT IF d$=CHR$(27)
- LOOP
- DEFTEXT 1,0,0,13
- DEFFILL 1,0,0
- ' E N D E G R A F I K T E I L
- ERASE wo_wert#()
- ERASE sum_wo_wert#()
- OB_STATE(stat_adr%,grafik&)=0 !grafikfeld aus
- @stat_box
- RETURN
- > PROCEDURE ausland_laden
- DIM tausland$(1000) ! temporäre arrays erstellen
- DIM tausland_tag%(1000)
- DIM tausland_nacht%(1000)
- LOCAL i&,n& ! locale vars
- OPEN "I",#1,"spesen.aus" ! file öffnen
- WHILE NOT EOF(#1) ! schleife
- INPUT #1,tausland$(i&)
- EXIT IF INSTR(tausland$(i&),"***")>0 ! abbruchbedingung
- INPUT #1,tausland_tag%(i&)
- INPUT #1,tausland_nacht%(i&)
- INC i&
- WEND
- CLOSE #1 ! file schließen
- DEC i& ! zähler eins zurück
- DIM ausland$(i&) ! richtig dimensionierte arrays
- DIM ausland_tag%(i&)
- DIM ausland_nacht%(i&)
- FOR n&=0 TO i& ! inhalt rüberschaufeln
- ausland$(n&)=tausland$(n&)
- ausland_tag%(n&)=tausland_tag%(n&)
- ausland_nacht%(n&)=tausland_nacht%(n&)
- NEXT n&
- ERASE tausland$(),tausland_tag%(),tausland_nacht%()
- @ausland_rsc_defitionen
- '
- ~RSRC_GADDR(0,ausland&,ausland_adr%) ! adresse zuweisen
- OB_H(ausland_adr%,sldbox&)=INT(OB_H(ausland_adr%,sldfr&)/i&) ! relative schieberhöhe
- IF OB_H(ausland_adr%,sldbox&)<10 ! mindestgröße
- OB_H(ausland_adr%,sldbox&)=10
- ENDIF
- RETURN
- > PROCEDURE ausland_rsc_defitionen
- LET ausland&=6 !RSC_TREE
- LET landbox&=1 !Obj in #6
- LET land1&=2 !Obj in #6
- LET land2&=3 !Obj in #6
- LET land3&=4 !Obj in #6
- LET land4&=5 !Obj in #6
- LET land5&=6 !Obj in #6
- LET land6&=7 !Obj in #6
- LET land7&=8 !Obj in #6
- LET land8&=9 !Obj in #6
- LET land9&=10 !Obj in #6
- LET tagbox&=11 !Obj in #6
- LET tag1&=12 !Obj in #6
- LET tag2&=13 !Obj in #6
- LET tag3&=14 !Obj in #6
- LET tag4&=15 !Obj in #6
- LET tag5&=16 !Obj in #6
- LET tag6&=17 !Obj in #6
- LET tag7&=18 !Obj in #6
- LET tag8&=19 !Obj in #6
- LET tag9&=20 !Obj in #6
- LET nachtbox&=21 !Obj in #6
- LET nacht1&=22 !Obj in #6
- LET nacht2&=23 !Obj in #6
- LET nacht3&=24 !Obj in #6
- LET nacht4&=25 !Obj in #6
- LET nacht5&=26 !Obj in #6
- LET nacht6&=27 !Obj in #6
- LET nacht7&=28 !Obj in #6
- LET nacht8&=29 !Obj in #6
- LET nacht9&=30 !Obj in #6
- LET fastup&=31 !Obj in #6
- LET slowup&=32 !Obj in #6
- LET slowdown&=33 !Obj in #6
- LET fastdown&=34 !Obj in #6
- LET land&=35 !Obj in #6
- LET tag&=36 !Obj in #6
- LET nacht&=37 !Obj in #6
- LET sldfr&=39 !Obj in #6
- LET sldbox&=40 !Obj in #6
- LET ausname&=47 !Obj in #6
- RETURN
- > PROCEDURE ausland_box
- LOCAL redraw$,ausland_adr%,x%,y%,b%,t%,a&
- '
- ~RSRC_GADDR(0,ausland&,ausland_adr%) ! adresse zuweisen
- ~FORM_CENTER(ausland_adr%,x&,y&,w&,h&) ! ausdehnung holen
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ ! redraw vorbereiten
- '
- @ausland_countrydrawinit
- @ausland_deselect
- ~OBJC_DRAW(ausland_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- @ausland_countrydraw
- REPEAT
- IF MOUSEK=1 ! wenn linke maustaste gedrückt
- a&=0
- a&=OBJC_FIND(ausland_adr%,0,5,MOUSEX,MOUSEY+19)
- SELECT a&
- CASE sldbox&
- @ausland_deselect
- @ausland_slidebox
- CASE fastup&
- @ausland_deselect
- @ausland_fastup
- CASE slowup&
- @ausland_deselect
- @ausland_slowup
- CASE slowdown&
- @ausland_deselect
- @ausland_slowdown
- CASE fastdown&
- @ausland_deselect
- @ausland_fastdown
- ENDSELECT
- IF a&>=land1& AND a&<=land9&
- @ausland_deselect
- ~OBJC_CHANGE(ausland_adr%,a&,0,x&,y&,w&,h&,1,1) ! selected
- ENDIF
- ENDIF
- UNTIL a&=ausname& OR ASC(INKEY$)=13 ! exitfeld
- PUT x&-4,y&-4,redraw$ ! redraw
- RETURN
- > PROCEDURE ausland_slidebox
- LOCAL ydiff&
- pos&=GRAF_SLIDEBOX(ausland_adr%,sldfr&,sldbox&,1)
- ydiff&=OB_H(ausland_adr%,sldfr&)-OB_H(ausland_adr%,sldbox&) ! freie pixel
- OB_Y(ausland_adr%,sldbox&)=ydiff&/1000*pos&
- ~OBJC_DRAW(ausland_adr%,sldfr&,1,x&,y&,w&,h&)
- @ausland_countrydraw
- RETURN
- > PROCEDURE ausland_fastup
- LOCAL ydiff&,ypos&,npos&
- ~OBJC_CHANGE(ausland_adr%,fastup&,0,x&,y&,w&,h&,1,1) ! selected
- '
- ydiff&=OB_H(ausland_adr%,sldfr&)-OB_H(ausland_adr%,sldbox&) ! freie pixel
- ypos&=OB_Y(ausland_adr%,sldbox&) ! akt. position
- npos&=ypos&-ydiff&/10 ! alte minus 10 %
- IF npos&<0 ! max. bis null
- npos&=0
- ENDIF
- pos&=(1000/ydiff&)*npos& ! 1000er raster ermitteln
- OB_Y(ausland_adr%,sldbox&)=npos& ! neue position im feld festlegen
- ~OBJC_DRAW(ausland_adr%,sldfr&,1,x&,y&,w&,h&) ! object-redraw
- '
- ~OBJC_CHANGE(ausland_adr%,fastup&,0,x&,y&,w&,h&,0,1) ! de-selected
- @ausland_countrydraw
- RETURN
- > PROCEDURE ausland_slowup
- LOCAL ydiff&,ypos&,npos&
- ~OBJC_CHANGE(ausland_adr%,slowup&,0,x&,y&,w&,h&,1,1) ! selected
- '
- ydiff&=OB_H(ausland_adr%,sldfr&)-OB_H(ausland_adr%,sldbox&) ! freie pixel
- ypos&=OB_Y(ausland_adr%,sldbox&) ! akt. position
- npos&=ypos&-ydiff&/100 ! alte minus 1 %
- IF npos&<0 ! max. bis null
- npos&=0
- ENDIF
- pos&=(1000/ydiff&)*npos& ! 1000er raster ermitteln
- OB_Y(ausland_adr%,sldbox&)=npos& ! neue position im feld festlegen
- ~OBJC_DRAW(ausland_adr%,sldfr&,1,x&,y&,w&,h&) ! object-redraw
- '
- ~OBJC_CHANGE(ausland_adr%,slowup&,0,x&,y&,w&,h&,0,1) ! de-selected
- @ausland_countrydraw
- RETURN
- > PROCEDURE ausland_slowdown
- LOCAL ydiff&,ypos&,npos&
- ~OBJC_CHANGE(ausland_adr%,slowdown&,0,x&,y&,w&,h&,1,1) ! selected
- '
- ydiff&=OB_H(ausland_adr%,sldfr&)-OB_H(ausland_adr%,sldbox&) ! freie pixel
- ypos&=OB_Y(ausland_adr%,sldbox&) ! akt. position
- npos&=ypos&+ydiff&/100 ! alte plus 1 %
- IF npos&>ydiff& ! max. bis voll unten
- npos&=ydiff&
- ENDIF
- pos&=(1000/ydiff&)*npos& ! 1000er raster ermitteln
- OB_Y(ausland_adr%,sldbox&)=npos& ! neue position im feld festlegen
- ~OBJC_DRAW(ausland_adr%,sldfr&,1,x&,y&,w&,h&) ! object-redraw
- '
- ~OBJC_CHANGE(ausland_adr%,slowdown&,0,x&,y&,w&,h&,0,1) ! de-selected
- @ausland_countrydraw
- RETURN
- > PROCEDURE ausland_fastdown
- LOCAL ydiff&,ypos&,npos&
- ~OBJC_CHANGE(ausland_adr%,fastdown&,0,x&,y&,w&,h&,1,1) ! selected
- '
- ydiff&=OB_H(ausland_adr%,sldfr&)-OB_H(ausland_adr%,sldbox&) ! freie pixel
- ypos&=OB_Y(ausland_adr%,sldbox&) ! akt. position
- npos&=ypos&+ydiff&/10 ! alte plus 10 %
- IF npos&>ydiff& ! max. bis voll unten
- npos&=ydiff&
- ENDIF
- pos&=(1000/ydiff&)*npos& ! 1000er raster ermitteln
- OB_Y(ausland_adr%,sldbox&)=npos& ! neue position im feld festlegen
- ~OBJC_DRAW(ausland_adr%,sldfr&,1,x&,y&,w&,h&) ! object-redraw
- '
- ~OBJC_CHANGE(ausland_adr%,fastdown&,0,x&,y&,w&,h&,0,1) ! de-selected
- @ausland_countrydraw
- RETURN
- > PROCEDURE ausland_countrydraw
- LOCAL zraster#,zeile#
- ' pos& in 0 - 1000
- ' ausland$(),ausland_tag%(),ausland_nacht%()
- ' anzahl länder in dim?() zeigt anzahl!
- ' PRINT DIM?(ausland$())-1
- ' 1000er raster
- zraster#=1000/(DIM?(ausland$())-9)
- IF pos&>0
- zeile#=pos&/zraster#
- ELSE
- zeile#=0
- ENDIF
- CHAR{{OB_SPEC(ausland_adr%,land1&)}}=ausland$(zeile#)
- CHAR{{OB_SPEC(ausland_adr%,land2&)}}=ausland$(zeile#+1)
- CHAR{{OB_SPEC(ausland_adr%,land3&)}}=ausland$(zeile#+2)
- CHAR{{OB_SPEC(ausland_adr%,land4&)}}=ausland$(zeile#+3)
- CHAR{{OB_SPEC(ausland_adr%,land5&)}}=ausland$(zeile#+4)
- CHAR{{OB_SPEC(ausland_adr%,land6&)}}=ausland$(zeile#+5)
- CHAR{{OB_SPEC(ausland_adr%,land7&)}}=ausland$(zeile#+6)
- CHAR{{OB_SPEC(ausland_adr%,land8&)}}=ausland$(zeile#+7)
- CHAR{{OB_SPEC(ausland_adr%,land9&)}}=ausland$(zeile#+8)
- CHAR{{OB_SPEC(ausland_adr%,tag1&)}}=STR$(ausland_tag%(zeile#))
- CHAR{{OB_SPEC(ausland_adr%,tag2&)}}=STR$(ausland_tag%(zeile#+1))
- CHAR{{OB_SPEC(ausland_adr%,tag3&)}}=STR$(ausland_tag%(zeile#+2))
- CHAR{{OB_SPEC(ausland_adr%,tag4&)}}=STR$(ausland_tag%(zeile#+3))
- CHAR{{OB_SPEC(ausland_adr%,tag5&)}}=STR$(ausland_tag%(zeile#+4))
- CHAR{{OB_SPEC(ausland_adr%,tag6&)}}=STR$(ausland_tag%(zeile#+5))
- CHAR{{OB_SPEC(ausland_adr%,tag7&)}}=STR$(ausland_tag%(zeile#+6))
- CHAR{{OB_SPEC(ausland_adr%,tag8&)}}=STR$(ausland_tag%(zeile#+7))
- CHAR{{OB_SPEC(ausland_adr%,tag9&)}}=STR$(ausland_tag%(zeile#+8))
- CHAR{{OB_SPEC(ausland_adr%,nacht1&)}}=STR$(ausland_nacht%(zeile#))
- CHAR{{OB_SPEC(ausland_adr%,nacht2&)}}=STR$(ausland_nacht%(zeile#+1))
- CHAR{{OB_SPEC(ausland_adr%,nacht3&)}}=STR$(ausland_nacht%(zeile#+2))
- CHAR{{OB_SPEC(ausland_adr%,nacht4&)}}=STR$(ausland_nacht%(zeile#+3))
- CHAR{{OB_SPEC(ausland_adr%,nacht5&)}}=STR$(ausland_nacht%(zeile#+4))
- CHAR{{OB_SPEC(ausland_adr%,nacht6&)}}=STR$(ausland_nacht%(zeile#+5))
- CHAR{{OB_SPEC(ausland_adr%,nacht7&)}}=STR$(ausland_nacht%(zeile#+6))
- CHAR{{OB_SPEC(ausland_adr%,nacht8&)}}=STR$(ausland_nacht%(zeile#+7))
- CHAR{{OB_SPEC(ausland_adr%,nacht9&)}}=STR$(ausland_nacht%(zeile#+8))
- ~OBJC_DRAW(ausland_adr%,landbox&,1,x&,y&,w&,h&) ! object-redraw
- ~OBJC_DRAW(ausland_adr%,tagbox&,1,x&,y&,w&,h&) ! object-redraw
- ~OBJC_DRAW(ausland_adr%,nachtbox&,1,x&,y&,w&,h&) ! object-redraw
- RETURN
- > PROCEDURE ausland_countrydrawinit
- CHAR{{OB_SPEC(ausland_adr%,land1&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land2&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land3&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land4&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land5&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land6&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land7&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land8&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,land9&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag1&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag2&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag3&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag4&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag5&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag6&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag7&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag8&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,tag9&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht1&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht2&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht3&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht4&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht5&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht6&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht7&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht8&)}}=""
- CHAR{{OB_SPEC(ausland_adr%,nacht9&)}}=""
- RETURN
- > PROCEDURE ausland_deselect
- LOCAL i|
- FOR i|=land1& TO land9&
- ~OBJC_CHANGE(ausland_adr%,i|,0,x&,y&,w&,h&,0,1) ! de-selected-all
- NEXT i|
- RETURN
- > PROCEDURE ausland_selected(VAR tag#,nacht#)
- LOCAL zraster#,zeile#,i|,ausland_adr%
- ' TAG und NACHT sind ab hier globale variable für auslandsspesensätze
- ~RSRC_GADDR(0,ausland&,ausland_adr%) ! adresse zuweisen
- auslandflag!(z#)=FALSE
- FOR i|=0 TO 8
- IF OB_STATE(ausland_adr%,land1&+i|)=1
- auslandflag!(z#)=TRUE
- zraster#=1000/(DIM?(ausland$())-9)
- IF pos&>0
- zeile#=pos&/zraster#+i|
- ELSE
- zeile#=0+i|
- ENDIF
- ' hier nun irgendeine übergabe
- tag#=ausland_tag%(zeile#)
- nacht#=ausland_nacht%(zeile#)
- ENDIF
- NEXT i|
- RETURN
- > PROCEDURE montag
- LOCAL redraw$,mondate_adr%,i|
- LET mondate&=7 !RSC_TREE
- LET modat&=4 !Obj in #7
- LET datex&=5 !Obj in #7
- '
- FOR i|=0 TO 6 ! vorhand. datum abtrennen
- ort$(i|)=RIGHT$(ort$(i|),LEN(ort$(i|))-7) ! da sonst 2 datum hintereinand.
- NEXT i| ! erscheinen
- '
- ~RSRC_GADDR(0,mondate&,mondate_adr%) ! adresse zuweisen
- ~FORM_CENTER(mondate_adr%,x&,y&,w&,h&) ! ausdehnung holen
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ ! redraw vorbereiten
- '
- CHAR{{OB_SPEC(mondate_adr%,modat&)}}=DATE$ ! datum einsetzen
- ~OBJC_DRAW(mondate_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- ~FORM_DO(mondate_adr%,0) ! OK-button abwarten
- DATE$=CHAR{{OB_SPEC(mondate_adr%,modat&)}} ! datum neu setzen
- OB_STATE(mondate_adr%,datex&)=BCLR(OB_STATE(mondate_adr%,datex&),0) !ok-button AUS
- PUT x&-4,y&-4,redraw$ ! redraw
- @datum_berechnen(DATE$,datum$())
- RETURN
- > PROCEDURE datum_berechnen(datum$,VAR datum$())
- ' Prozedur zum berechnen der fortlaufenden Kalendertage, wenn das Montagsdatum
- ' angegeben wird. Übergeben wird:
- ' Datum$=DATE$
- ' DATUM$() als array, das alle Tage enthält (beginnend mit Montags)
- '
- LOCAL i|,tag|,last_tag|,monat|,jahr&,tag$,monat$
- '
- tag|=VAL(LEFT$(datum$,2)) ! aus Datum den Tag holen
- monat|=VAL(MID$(datum$,4,2)) ! aus Datum den Monat holen
- jahr&=VAL(RIGHT$(datum$,4)) ! aus Datum das Jahr holen
- SELECT monat|
- CASE 1,3,5,7,8,10,12 ! alle Monate mit 31 Tagen
- last_tag|=31
- CASE 4,6,9,11 ! alle Monate mit 30 Tagen
- last_tag|=30
- CASE 2 ! der Februar
- last_tag|=28
- IF MOD(jahr&,4)=0 ! das Schaltjahr
- last_tag|=29
- ENDIF
- ENDSELECT
- '
- datum$(0)=STR$(tag|,2)+"."+STR$(monat|,2)+". " ! Nulltes Element
- ort$(0)=datum$(0)+ort$(0) ! datum dranmogeln
- FOR i|=1 TO 6 ! alle 6 weiteren
- INC tag|
- IF tag|>last_tag| ! nächster Monat
- tag|=1
- INC monat|
- IF monat|=13 ! nächstes Jahr
- monat|=1
- ENDIF
- ENDIF
- tag$=STR$(tag|,2)+"."
- monat$=STR$(monat|,2)+". "
- datum$(i|)=tag$+monat$ ! String basteln
- ort$(i|)=datum$(i|)+ort$(i|) ! datum dranmogeln
- NEXT i|
- RETURN
- > PROCEDURE finito
- ' Menüleiste entfernen, Resource aus Speicher entfernen und
- ' reservierten Speicher wieder zurückholen.
- LOCAL dummy&
- ALERT 2," Wollen Sie das|Programm beenden?",2,"NEIN| JA ",dummy&
- IF dummy&=2
- ON BREAK CONT
- CLOSEW 0
- ~WIND_SET(0,14,0,0,0,0)
- ~MENU_BAR(menu_adr%,0)
- ~RSRC_FREE()
- ~MFREE(tree_adr%)
- RESERVE FRE(0)+total_memory%-(HIMEM-BASEPAGE)
- END
- ENDIF
- RETURN
- > PROCEDURE init_hintergrund
- LOCAL word&,i&
- total_memory%=HIMEM-BASEPAGE
- RESERVE FRE(0)-32500 ! reicht für alles
- tree_adr%=MALLOC(31000)
- RESTORE ob_data
- FOR i&=0 TO 30
- READ word&
- INT{tree_adr%+i&*2}=word&
- NEXT i&
- ob_data:
- DATA -1,1,1,20,0,0,0,&1101,0,19,640,381
- DATA -1,-1,0,23,32,0,0,&1131,0,0,640,381
- DATA 0,0,80,381,0,0,1
- '
- OB_SPEC(tree_adr%,1)=tree_adr%+48
- bit_adr%=tree_adr%+62
- {tree_adr%+48}=bit_adr%
- screenlen&=381*80
- screen_adr%=XBIOS(2)+19*80
- ' BMOVE screen_adr%,bit_adr%,screen_len&
- ~WIND_SET(0,14,SWAP(tree_adr%),tree_adr%,0,0)
- ~FORM_DIAL(3,0,0,0,0,0,0,640,400)
- RETURN
- > PROCEDURE hilfe
- LOCAL redraw$,hilfe_adr%
- '
- LET hilfe&=8 !RSC_TREE
- LET helpexit&=14 !Obj in #8
- '
- ~RSRC_GADDR(0,hilfe&,hilfe_adr%) ! adresse zuweisen
- ~FORM_CENTER(hilfe_adr%,x&,y&,w&,h&) ! ausdehnung holen
- GET x&-4,y&-4,x&+4+w&,y&+4+h&,redraw$ ! redraw vorbereiten
- '
- ~OBJC_DRAW(hilfe_adr%,0,7,x&,y&,w&,h&) ! zeichnen
- ~FORM_DO(hilfe_adr%,0) ! OK-button abwarten
- OB_STATE(hilfe_adr%,helpexit&)=BCLR(OB_STATE(hilfe_adr%,helpexit&),0)
- PUT x&-4,y&-4,redraw$ ! redraw
- RETURN
- > PROCEDURE gomonat
- @week_tree_init
- @week_pop_up
- RETURN
- > PROCEDURE week_auswahl
- LOCAL tree_adr%,ex%,n$,n|
- '
- ~RSRC_GADDR(0,getweeks&,tree_adr%) ! Adresse des Objektbaumes ermitteln
- ~FORM_CENTER(tree_adr%,x%,y%,w%,h%) ! Objektbaumkoordinaten zentrieren
- ~FORM_DIAL(0,0,0,0,0,x%,y%,w%,h%) ! screen reservieren
- ~FORM_DIAL(1,0,0,0,0,x%,y%,w%,h%) ! screen growbox
- IF second!=FALSE
- ' Texte in den Edit-Feldern vorbelegen
- pfad$=" "+CHR$(65+GEMDOS(&H19))+":"+DIR$(0)+"\"
- CHAR{{OB_SPEC(tree_adr%,tellpath&)}}=pfad$
- CHAR{{OB_SPEC(tree_adr%,week1&)}}="1"
- CHAR{{OB_SPEC(tree_adr%,week2&)}}="2"
- CHAR{{OB_SPEC(tree_adr%,week3&)}}="3"
- CHAR{{OB_SPEC(tree_adr%,week4&)}}="4"
- CHAR{{OB_SPEC(tree_adr%,week5&)}}="5"
- CHAR{{OB_SPEC(tree_adr%,mw1&)}}="nicht da"
- CHAR{{OB_SPEC(tree_adr%,mw2&)}}="nicht da"
- CHAR{{OB_SPEC(tree_adr%,mw3&)}}="nicht da"
- CHAR{{OB_SPEC(tree_adr%,mw4&)}}="nicht da"
- CHAR{{OB_SPEC(tree_adr%,mw5&)}}="nicht da"
- OB_FLAGS(tree_adr%,week1&)=21 ! editable AUS (29=AN)
- OB_FLAGS(tree_adr%,week2&)=21
- OB_FLAGS(tree_adr%,week3&)=21
- OB_FLAGS(tree_adr%,week4&)=21
- OB_FLAGS(tree_adr%,week5&)=21
- OB_FLAGS(tree_adr%,getpath&)=7
- OB_FLAGS(tree_adr%,weekok&)=0
- OB_STATE(tree_adr%,weekok&)=0+32+8
- OB_STATE(tree_adr%,week1&)=0+32+8 ! objecte week1-5 alle AUS
- OB_STATE(tree_adr%,week2&)=0+32+8 ! und disabled
- OB_STATE(tree_adr%,week3&)=0+32+8
- OB_STATE(tree_adr%,week4&)=0+32+8
- OB_STATE(tree_adr%,week5&)=0+32+8
- ENDIF
- '
- ~OBJC_DRAW(tree_adr%,0,1,x%,y%,w%,h%) ! Objektbaum zeichnen
- '
- ex%=FORM_DO(tree_adr%,0) ! Objekt mit Exit-Status angeklickt ?
- '
- ~FORM_DIAL(2,0,0,0,0,x%,y%,w%,h%) ! screen shrinkbox
- ~FORM_DIAL(3,0,0,0,0,x%,y%,w%,h%) ! screen redraw
- SELECT ex%
- CASE week1&
- OB_FLAGS(tree_adr%,week1&)=29 ! editable AN (21=AUS)
- OB_FLAGS(tree_adr%,week2&)=29 ! editable AN
- OB_FLAGS(tree_adr%,week3&)=29
- OB_FLAGS(tree_adr%,week4&)=29
- OB_FLAGS(tree_adr%,week5&)=29
- OB_STATE(tree_adr%,week1&)=0+32 ! 0= aus, 32=shadowed
- OB_STATE(tree_adr%,week2&)=0+32
- OB_STATE(tree_adr%,week3&)=0+32
- OB_STATE(tree_adr%,week4&)=0+32
- OB_STATE(tree_adr%,week5&)=0+32
- OB_FLAGS(tree_adr%,weekok&)=7 ! OK-Feld : AN und EXIT
- OB_STATE(tree_adr%,weekok&)=0+32 ! und shadowed
- n$=CHAR{{OB_SPEC(tree_adr%,week1&)}}
- CHAR{{OB_SPEC(tree_adr%,week2&)}}=STR$(VAL(n$)+1)
- CHAR{{OB_SPEC(tree_adr%,week3&)}}=STR$(VAL(n$)+2)
- CHAR{{OB_SPEC(tree_adr%,week4&)}}=STR$(VAL(n$)+3)
- CHAR{{OB_SPEC(tree_adr%,week5&)}}=STR$(VAL(n$)+4)
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week1&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw1&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw1&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week2&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw2&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw2&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week3&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw3&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw3&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week4&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw4&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw4&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week5&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw5&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw5&)}}="nicht da"
- ENDIF
- @week_auswahl
- CASE week2&,week3&,week4&,week5&
- OB_STATE(tree_adr%,week2&)=0+32
- OB_STATE(tree_adr%,week3&)=0+32
- OB_STATE(tree_adr%,week4&)=0+32
- OB_STATE(tree_adr%,week5&)=0+32
- n$=CHAR{{OB_SPEC(tree_adr%,week2&)}}
- CHAR{{OB_SPEC(tree_adr%,week2&)}}=STR$(VAL(n$))
- n$=CHAR{{OB_SPEC(tree_adr%,week3&)}}
- CHAR{{OB_SPEC(tree_adr%,week3&)}}=STR$(VAL(n$))
- n$=CHAR{{OB_SPEC(tree_adr%,week4&)}}
- CHAR{{OB_SPEC(tree_adr%,week4&)}}=STR$(VAL(n$))
- n$=CHAR{{OB_SPEC(tree_adr%,week5&)}}
- CHAR{{OB_SPEC(tree_adr%,week5&)}}=STR$(VAL(n$))
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week2&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw2&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw2&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week3&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw3&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw3&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week4&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw4&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw4&)}}="nicht da"
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week5&)}}+".KW")
- CHAR{{OB_SPEC(tree_adr%,mw5&)}}="gefunden"
- ELSE
- CHAR{{OB_SPEC(tree_adr%,mw5&)}}="nicht da"
- ENDIF
- @week_auswahl
- CASE getpath&
- OB_FLAGS(tree_adr%,getpath&)=5
- OB_FLAGS(tree_adr%,week1&)=29+2 ! editable AN (21=AUS)
- OB_STATE(tree_adr%,week1&)=0+32 ! 0= aus, 32=shadowed
- OB_STATE(tree_adr%,getpath&)=0+32
- second!=TRUE
- FILESELECT pfad$,"",pfadneu$
- IF pfadneu$<>"" ! wenn was gewählt wurde
- CHAR{{OB_SPEC(tree_adr%,tellpath&)}}=pfadneu$
- pfad$=pfadneu$
- ENDIF
- @week_auswahl
- CASE weekok&
- OB_STATE(tree_adr%,week1&)=0+32 ! 0= aus, 32=shadowed
- OB_STATE(tree_adr%,week2&)=0+32 ! objecte alle AUS
- OB_STATE(tree_adr%,week3&)=0+32
- OB_STATE(tree_adr%,week4&)=0+32
- OB_STATE(tree_adr%,week5&)=0+32
- OB_STATE(tree_adr%,weekok&)=0+32
- CASE weekcanc&
- second!=FALSE
- OB_STATE(tree_adr%,week1&)=0+32 ! 0= aus, 32=shadowed
- OB_STATE(tree_adr%,week2&)=0+32 ! objecte alle AUS
- OB_STATE(tree_adr%,week3&)=0+32
- OB_STATE(tree_adr%,week4&)=0+32
- OB_STATE(tree_adr%,week5&)=0+32
- OB_STATE(tree_adr%,weekcanc&)=0 ! nur AUS
- ENDSELECT
- RETURN
- > PROCEDURE week_laden
- GET 196,136,444,275+20,redraw$ ! redraw vorbereiten
- DEFFILL 1,0
- PBOX 200,140,440,275
- PBOX 203,143,436,272
- TEXT 250,170,"Es wird gerade die"
- TEXT 270,190,"Kalenderwoche"
- TEXT 280,230,"geladen ..."
- ERASE week#(),weeksum#(),f_name$() ! WOCHENMODUL-ARRAYS LÖSCHEN
- DIM week#(13,4),weeksum#(5,6),f_name$(4) ! WOCHENMODUL-ARRAYS
- '
- ~RSRC_GADDR(0,getweeks&,tree_adr%) ! Adresse des Objektbaumes ermitteln
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week1&)}}+".KW")
- f_name$(0)=pfad$+CHAR{{OB_SPEC(tree_adr%,week1&)}}+".KW"
- @week_einzelfiles_laden(0)
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week2&)}}+".KW")
- f_name$(1)=pfad$+CHAR{{OB_SPEC(tree_adr%,week2&)}}+".KW"
- @week_einzelfiles_laden(1)
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week3&)}}+".KW")
- f_name$(2)=pfad$+CHAR{{OB_SPEC(tree_adr%,week3&)}}+".KW"
- @week_einzelfiles_laden(2)
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week4&)}}+".KW")
- f_name$(3)=pfad$+CHAR{{OB_SPEC(tree_adr%,week4&)}}+".KW"
- @week_einzelfiles_laden(3)
- ENDIF
- IF EXIST(pfad$+CHAR{{OB_SPEC(tree_adr%,week5&)}}+".KW")
- f_name$(4)=pfad$+CHAR{{OB_SPEC(tree_adr%,week5&)}}+".KW"
- @week_einzelfiles_laden(4)
- ENDIF
- PUT 196,136,redraw$ ! redraw
- RETURN
- > PROCEDURE week_einzelfiles_laden(w|)
- DIM week_zeilen$(14*7)
- TEXT 310,210,RIGHT$(f_name$(w|),LEN(f_name$(w|))-RINSTR(f_name$(w|),"\"))
- OPEN "I",#1,f_name$(w|) ! so läuft die routine durch
- RECALL #1,week_zeilen$(),-1,zeilenanzahl# ! alle wochen mit inhalt
- CLOSE
- FOR i&=0 TO zeilenanzahl#-1 STEP 14 !-->>WOCHENSUMMEN BILDEN
- ADD week#(0,w|),VAL(week_zeilen$(i&)) !KM
- ADD week#(1,w|),VAL(week_zeilen$(i&+1)) !KM-DM
- ADD week#(2,w|),VAL(week_zeilen$(i&+2)) !h-Anf.
- ADD week#(3,w|),VAL(week_zeilen$(i&+3)) !h-Ende
- ADD week#(4,w|),VAL(week_zeilen$(i&+4)) !Spesen Tag
- ADD week#(5,w|),VAL(week_zeilen$(i&+5)) !Spesen Nacht
- ADD week#(6,w|),VAL(week_zeilen$(i&+6)) !Spesen n. Beleg
- ADD week#(7,w|),VAL(week_zeilen$(i&+7)) !Nebenkosten
- ADD week#(8,w|),VAL(week_zeilen$(i&+8)) !Ort
- ADD week#(9,w|),VAL(week_zeilen$(i&+9)) !h-aussen
- ADD week#(10,w|),VAL(week_zeilen$(i&+10)) !h-calc
- ADD week#(11,w|),VAL(week_zeilen$(i&+11)) !button 0 M
- ADD week#(12,w|),VAL(week_zeilen$(i&+12)) ! " 1 F
- ADD week#(13,w|),VAL(week_zeilen$(i&+13)) ! " 2 E
- weeksum#(w|,6)=week#(1,w|)+week#(4,w|)+week#(5,w|)+week#(6,w|)+week#(7,w|)
- NEXT i&
- ERASE week_zeilen$()
- RETURN
- > PROCEDURE week_druckausgabe
- CLS
- LOCAL w|,a$,x1&,x2&,y1&,y2&,mehrarbeit#
- FOR n|=0 TO 5 ! weeksum array löschen, sonst doppeltberechnungen
- FOR m|=0 TO 6
- weeksum#(n|,m|)=0
- NEXT m|
- NEXT n|
- x1&=WORK_OUT(0)/2-570/2
- y1&=WORK_OUT(1)/2-180/2
- x2&=WORK_OUT(0)/2+570/2
- y2&=WORK_OUT(1)/2+180/2
- BOX x1&-2,y1&-2,x2&+2,y2&+2
- BOX x1&,y1&,x2&,y2&
- TEXT x1&+20,y1&+20,"Kalenderwoche"
- LINE x1&,y1&+25,x2&,y1&+25
- TEXT x1&+20,y1&+40,"Kilometergeld"
- LINE x1&,y1&+45,x2&,y1&+45
- TEXT x1&+20,y1&+60,"Tagesspesen"
- LINE x1&,y1&+65,x2&,y1&+65
- TEXT x1&+20,y1&+80,"Nachtspesen"
- LINE x1&,y1&+85,x2&,y1&+85
- TEXT x1&+20,y1&+100,"Spesen n. Bel."
- LINE x1&,y1&+105,x2&,y1&+105
- TEXT x1&+20,y1&+120,"Nebenkosten"
- LINE x1&,y1&+125,x2&,y1&+125
- TEXT x1&+20,y1&+140,"Zeit Ist-Soll"
- LINE x1&,y1&+145,x2&,y1&+145
- LINE x1&,y1&+147,x2&,y1&+147
- TEXT x1&+20,y1&+170,"Wochensumme"
- FOR w|=0 TO 4
- LINE x1&+135+70*w|,y1&,x1&+135+70*w|,y2&
- IF EXIST(f_name$(w|))
- mehrarbeit#=0
- a$=SPACE$(7)
- RSET a$=RIGHT$(f_name$(w|),LEN(f_name$(w|))-RINSTR(f_name$(w|),"\"))
- TEXT x1&+140+70*w|,y1&+20,a$
- TEXT x1&+140+70*w|,y1&+40,STR$(week#(1,w|),7,2)
- TEXT x1&+140+70*w|,y1&+60,STR$(week#(4,w|),7,2)
- TEXT x1&+140+70*w|,y1&+80,STR$(week#(5,w|),7,2)
- TEXT x1&+140+70*w|,y1&+100,STR$(week#(6,w|),7,2)
- TEXT x1&+140+70*w|,y1&+120,STR$(week#(7,w|),7,2)
- '
- weeksum#(5,0)=weeksum#(5,0)+week#(1,w|) ! berechnung wochensumme kmdm
- weeksum#(5,1)=weeksum#(5,1)+week#(4,w|) ! berechnung wochensumme tagessp.
- weeksum#(5,2)=weeksum#(5,2)+week#(5,w|) ! berechnung wochensumme nachtsp.
- weeksum#(5,3)=weeksum#(5,3)+week#(6,w|) ! berechnung wochensumme n. beleg
- weeksum#(5,4)=weeksum#(5,4)+week#(7,w|) ! berechnung wochensumme sonst.
- weeksum#(w|,6)=week#(1,w|)+week#(4,w|)+week#(5,w|)+week#(6,w|)+week#(7,w|)
- '
- mehrarbeit#=TRUNC(week#(10,w|))+FRAC(week#(10,w|))*1.66666
- mehrarbeit#=-wochenstunden#+mehrarbeit#-mittag#
- '
- weeksum#(5,5)=weeksum#(5,5)+mehrarbeit# ! berechnung wochensumme zeiten
- '
- mehrarbeit#=ROUND(TRUNC(mehrarbeit#)+FRAC(mehrarbeit#)*0.6,2)
- IF ROUND(FRAC(mehrarbeit#),2)=0.6
- mehrarbeit#=TRUNC(mehrarbeit#)+1
- ENDIF
- '
- TEXT x1&+140+70*w|,y1&+140,STR$(mehrarbeit#,7,2)
- TEXT x1&+140+70*w|,y1&+170,STR$(weeksum#(w|,6),7,2)
- ENDIF
- NEXT w|
- LINE x1&+135+70*5,y1&,x1&+135+70*w|,y2&
- TEXT x1&+140+70*5,y1&+20," Summen"
- TEXT x1&+140+70*5,y1&+40,STR$(weeksum#(5,0),8,2)
- TEXT x1&+140+70*5,y1&+60,STR$(weeksum#(5,1),8,2)
- TEXT x1&+140+70*5,y1&+80,STR$(weeksum#(5,2),8,2)
- TEXT x1&+140+70*5,y1&+100,STR$(weeksum#(5,3),8,2)
- TEXT x1&+140+70*5,y1&+120,STR$(weeksum#(5,4),8,2)
- '
- weeksum#(5,5)=ROUND(TRUNC(weeksum#(5,5))+FRAC(weeksum#(5,5))*0.6,2) !zeiten
- IF ROUND(FRAC(weeksum#(5,5)),2)=0.6
- weeksum#(5,5)=TRUNC(weeksum#(5,5))+1
- ENDIF
- TEXT x1&+140+70*5,y1&+140,STR$(weeksum#(5,5),8,2)
- '
- weeksum#(5,6)=weeksum#(0,6)+weeksum#(1,6)+weeksum#(2,6)+weeksum#(3,6)+weeksum#(4,6) !gesamtsumme
- TEXT x1&+140+70*5,y1&+170,STR$(weeksum#(5,6),8,2)
- '
- DEFTEXT 1,0,0,6
- TEXT 50,WORK_OUT(1)-20,"TASTE 'ESC' : ZURÜCK , TASTE 'H' : HARDCOPY , TASTE 'D' : DRUCKER"
- DO
- d$=INKEY$
- IF d$="H" OR d$="h"
- TEXT 50,WORK_OUT(1)-20,SPACE$(50) ! infotxt weg
- @select_hardcopy
- d$=CHR$(27)
- ENDIF
- IF d$="D" OR d$="d"
- TEXT 50,WORK_OUT(1)-20,SPACE$(80) ! infotxt weg
- woche!=FALSE
- @auf_formular_drucken
- d$=CHR$(27)
- ENDIF
- EXIT IF d$=CHR$(27)
- LOOP
- DEFTEXT 1,0,0,13
- BMOVE bit_adr%,screen_adr%,screenlen& ! screen RESTORE
- RETURN
- > PROCEDURE week_pop_up
- LOCAL tree_adr%,ex%,mx&,my&,mb&,md&
- '
- ~RSRC_GADDR(0,weekmenu&,tree_adr%) ! Adresse des Objektbaumes ermitteln
- OB_X(tree_adr%,popframe&)=MOUSEX ! popframe& ist rahmen
- OB_Y(tree_adr%,popframe&)=MOUSEY+25
- IF OB_X(tree_adr%,popframe&)>WORK_OUT(0)-100
- OB_X(tree_adr%,popframe&)=MOUSEX-150
- ENDIF
- IF OB_Y(tree_adr%,popframe&)>WORK_OUT(1)-50
- OB_Y(tree_adr%,popframe&)=MOUSEY-50
- ENDIF
- x%=OB_X(tree_adr%,popframe&)-2
- y%=OB_Y(tree_adr%,popframe&)-2
- w%=OB_W(tree_adr%,popframe&)+4
- h%=OB_H(tree_adr%,popframe&)+4
- ~FORM_DIAL(0,0,0,0,0,x%,y%,w%,h%) ! screen reservieren
- ~FORM_DIAL(1,0,0,0,0,x%,y%,w%,h%) ! screen growbox
- ~OBJC_DRAW(tree_adr%,popframe&,1,x%,y%,w%,h%) ! Objektbaum zeichnen
- '
- DO
- ~GRAF_MKSTATE(mx&,my&,mb&,md&)
- IF mx&>x% AND mx&<x%+w% AND my&>y% AND my&<y%+h%
- alt%=ex%
- ex%=OBJC_FIND(tree_adr%,popframe&,1,mx&,my&)
- IF ex%>-1
- IF alt%<>ex%
- ~OBJC_CHANGE(tree_adr%,weeksel&,0,x%,y%,w%,h%,0,1)
- ~OBJC_CHANGE(tree_adr%,weekgraf&,0,x%,y%,w%,h%,0,1)
- ~OBJC_CHANGE(tree_adr%,weekprnt&,0,x%,y%,w%,h%,0,1)
- ~OBJC_CHANGE(tree_adr%,ex%,0,x%,y%,w%,h%,1,1)
- ENDIF
- ENDIF
- ENDIF
- LOOP UNTIL MOUSEK<>0
- IF mx&<x% OR mx&>x%+w% OR my&<y% OR my&>y%+h% ! selected aber außerhalb
- ex%=-1 ! geklickt = abbruch
- ENDIF
- '
- ~FORM_DIAL(2,0,0,0,0,x%,y%,w%,h%) ! screen shrinkbox
- ~FORM_DIAL(3,0,0,0,0,x%,y%,w%,h%) ! screen redraw
- SELECT ex%
- CASE weeksel&
- @week_auswahl
- IF second!=TRUE
- @week_laden
- ENDIF
- CASE weekgraf&
- IF second!=TRUE
- @week_grafik
- ELSE
- @week_pop_up
- ENDIF
- CASE weekprnt&
- IF second!=TRUE
- @week_druckausgabe
- ELSE
- @week_pop_up
- ENDIF
- ENDSELECT
- RETURN
- > PROCEDURE week_tree_init
- LET getweeks&=9 !RSC_TREE
- LET weekmenu&=10 !RSC_TREE
- LET week1&=2 !Obj in #9
- LET week2&=3 !Obj in #9
- LET week3&=4 !Obj in #9
- LET week4&=5 !Obj in #9
- LET week5&=6 !Obj in #9
- LET getpath&=7 !Obj in #9
- LET tellpath&=8 !Obj in #9
- LET weekok&=9 !Obj in #9
- LET weekcanc&=10 !Obj in #9
- LET mw1&=11 !Obj in #9
- LET mw2&=12 !Obj in #9
- LET mw3&=13 !Obj in #9
- LET mw4&=14 !Obj in #9
- LET mw5&=15 !Obj in #9
- LET popframe&=1 !Obj in #10
- LET weeksel&=2 !Obj in #10
- LET weekgraf&=3 !Obj in #10
- LET weekprnt&=4 !Obj in #10
- RETURN
- > PROCEDURE week_grafik
- CLS
- LOCAL x1&,x2&,y1&,y2&,h_step&,v_step&,max_sum#,i&,x1g&,x2g&,y1g&,y2g&
- x1&=WORK_OUT(0)/2-495/2
- y1&=WORK_OUT(1)/2-180/2
- x2&=WORK_OUT(0)/2+495/2
- y2&=WORK_OUT(1)/2+150/2
- h_step&=(x2&-x1&)/5
- LINE x1&,y1&,x1&,y2& ! y-achse
- LINE x1&,y2&,x2&,y2& ! x-achse
- FOR w|=0 TO 4
- IF weeksum#(w|,6)>max_sum#
- max_sum#=weeksum#(w|,6)
- ENDIF
- NEXT w|
- max_sum#=ROUND(max_sum#+100,-2)
- v_step&=(y2&-y1&)/(max_sum#/100)
- DEFTEXT 1,0,0,6
- FOR i&=0 TO max_sum#/100 ! y-achsenbeschriftung
- LINE x1&,y2&-i&*v_step&,x1&-3,y2&-i&*v_step&
- IF (EVEN(i&) AND max_sum#>1000) OR max_sum#<1000 ! skip vereinbaren
- TEXT x1&-40,y2&-i&*v_step&+3,STR$(i&*100)
- ENDIF
- NEXT i&
- DEFTEXT 1,0,0,13
- DIM x&(3),y&(3)
- FOR w|=1 TO 5 ! LINIEN, KW_NAMEN UND DATEN EINTRAGEN
- LINE x1&+h_step&*w|-h_step&/2,y2&,x1&+h_step&*w|-h_step&/2,y2&+3
- TEXT x1&+h_step&*w|-h_step&/2-12,y2&+20,RIGHT$(f_name$(w|-1),LEN(f_name$(w|-1))-RINSTR(f_name$(w|-1),"\"))
- '
- x1g&=x1&+h_step&*w|-h_step&/2-h_step&/4
- y1g&=y2&
- x2g&=x1&+h_step&*w|-h_step&/2+h_step&/4
- y2g&=y2&-(week#(1,w|-1)/100)*v_step& ! unten Kilometergeld
- DEFFILL 1,2,1
- PBOX x1g&,y1g&,x2g&,y2g&
- x&(0)=x2g&
- y&(0)=y1g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y1g&-h_step&/4
- x&(2)=x2g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x2g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&()
- '
- y1g&=y2g& ! neue untere kante
- y2g&=y1g&-(week#(4,w|-1)/100)*v_step& ! dann Tagesspesen
- DEFFILL 1,2,2
- PBOX x1g&,y1g&,x2g&,y2g&
- x&(0)=x2g&
- y&(0)=y1g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y1g&-h_step&/4
- x&(2)=x2g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x2g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&()
- '
- y1g&=y2g& ! neue untere kante
- y2g&=y1g&-(week#(5,w|-1)/100)*v_step& ! dann Nachtspesen
- DEFFILL 1,2,3
- PBOX x1g&,y1g&,x2g&,y2g&
- x&(0)=x2g&
- y&(0)=y1g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y1g&-h_step&/4
- x&(2)=x2g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x2g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&()
- '
- y1g&=y2g& ! neue untere kante
- y2g&=y1g&-(week#(6,w|-1)/100)*v_step& ! dann Spesen n. Beleg
- DEFFILL 1,2,4
- PBOX x1g&,y1g&,x2g&,y2g&
- x&(0)=x2g&
- y&(0)=y1g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y1g&-h_step&/4
- x&(2)=x2g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x2g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&()
- '
- y1g&=y2g& ! neue untere kante
- y2g&=y1g&-(week#(7,w|-1)/100)*v_step& ! dann Sonstige Spesen
- DEFFILL 1,2,5
- PBOX x1g&,y1g&,x2g&,y2g&
- x&(0)=x2g&
- y&(0)=y1g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y1g&-h_step&/4
- x&(2)=x2g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x2g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&() ! Seite
- DEFFILL 1,2,6
- x&(0)=x2g&
- y&(0)=y2g&
- x&(1)=x2g&+h_step&/4
- y&(1)=y2g&-h_step&/4
- x&(2)=x1g&+h_step&/4
- y&(2)=y2g&-h_step&/4
- x&(3)=x1g&
- y&(3)=y2g&
- POLYFILL 4,x&(),y&() ! Deckel
- NEXT w|
- ERASE x&(),y&()
- '
- DEFTEXT 1,0,0,6
- DEFFILL 1,2,5
- PBOX x1&,y2&+30,x1&+15,y2&+35
- TEXT x1&+35,y2&+35,"Sonst. Spesen"
- DEFFILL 1,2,4
- PBOX x1&,y2&+40,x1&+15,y2&+45
- TEXT x1&+35,y2&+45,"Spesen nach Beleg"
- DEFFILL 1,2,3
- PBOX x1&,y2&+50,x1&+15,y2&+55
- TEXT x1&+35,y2&+55,"Übernachtungskosten"
- DEFFILL 1,2,2
- PBOX x1&,y2&+60,x1&+15,y2&+65
- TEXT x1&+35,y2&+65,"Tagesspesen"
- DEFFILL 1,2,1
- PBOX x1&,y2&+70,x1&+15,y2&+75
- TEXT x1&+35,y2&+75,"Kilometergeld"
- '
- TEXT 50,WORK_OUT(1)-20,"TASTE 'ESC' : ZURÜCK , TASTE 'H' : HARDCOPY"
- DO
- d$=INKEY$
- IF d$="H" OR d$="h"
- TEXT 50,WORK_OUT(1)-20,SPACE$(50) ! infotxt weg
- @select_hardcopy
- d$=CHR$(27)
- ENDIF
- EXIT IF d$=CHR$(27)
- LOOP
- DEFTEXT 1,0,0,13
- DEFFILL 1,0,0
- '
- BMOVE bit_adr%,screen_adr%,screenlen& ! screen RESTORE
- RETURN
-